Spring Mybatis Error 해결 방법

Error :  java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for​ ~

1. mapper id Check!!

 

mapper 파일 ( 쿼리문을 모아두는 xml파일 ) 에서 <select id='seungje'></select>

seungje가 쿼리문이 호출되는 DAO와 같은 java파일에서 값이 같아야 하는데, 다르면 에러가 발생합니다. 

 

dao에서 seungje라는 select 쿼리문을 부르고 싶은데 id가 다르니 부를 수 없는 것이죠

 

2. Parameter와 bean의 필드명이 틀린 경우

 

3. mapper 파일 namespace 가 다를 경우

 

1번과 비슷한 개념인 것 같습니다 해당 쿼리문을 호출할 때 namespace와 id를 통해 부르게 되는 것이죠

namespace로 mapper 전체를 찾고 id를 통해 그 안에서 요청한 쿼리를 찾게 되는 것입니다.

 

4. mapper에 정의된 namespace 중복될 경우

 

당연히 다른 경우에 문제가 되면, 중복될 경우에도 문제가 되겠죠? 2개 중에 어떤 걸 찾아야 할지 모르니까요~

 

 

5. MyBatis config 파일에 정의가 되어 있지 않거나 Spelling이 틀린 경우

 

MyBatis 설정파일로써 config dtd를 입력하고 밑에 <configuration> </configuration> 태그를 만들어 주지 않으면 

 

에러가 발생합니다 반드시!! 빈 태그라도 만들어 주셔야 합니다. 

 

추가적으로 설정은 config이고 쿼리문을 모아두는 곳은 mapper입니다 2개의 dtd가 다릅니다 꼭 확인하세요




'IT NOTE > Catching Error' 카테고리의 다른 글

java.sql.SQLException: 부적합한 열 인덱스  (0) 2019.02.07

 

파일을 수정한 뒤에

파일을 삭제 한후 

 

전부 깃프로젝트에 입력이 됨 

새로운 파일을 넣어줌

git log을 쳐 보았을 떄

commit 메시지를 잘못 입력했을 때 명령어 : git rebase

 

git rebase -i HEAD~3을 입력하면 

delete부분에 pick부분을 reword를 하면 commit내용이 바뀝니다.

면접을 보면서 프로젝트를 설명하다가 2차 프로젝트 내용을 하다가 설명을 제대로 못한 부분이 있었다.

그래서 지금 다시 한번 쓰면서 한번더 습득하는 시간을 가지려고 한다.

 

 

 

==설명하다 막혔던 부분 : Propertise를 왜 썼나요??

 JavaMailAPI를 이용하는 과정에서 메일과 관련된 모든 작업을 처리하기 위해서는 먼저 세션을 생성해야한다. 

STMP와 관련된 세션을 생성하기 위해서는 STMP서버와 관련된 정보를 지정해 주어야 한다.

 "mail.smtp.host" 속성은 이메일 발송을 처리해줄 STMP 서버를 나타낸다. "mail.smtp.user" 속성은 SMTP 서버에 있는 사용자의 계정(또는 아이디)를 나타낸다. Session 클래스의 getDefaultInstance() 메소드는 파라미터로 전달받은 Properties에 저장되어 있는 속성값을 사용하여 세션을 생성한다.

'생각나는대로 메모장 ' 카테고리의 다른 글

TRANSACTION?  (0) 2019.07.12
소스 보면서 모르는 부분 Java API로 확인해 보는 시간  (0) 2019.07.12
Jason  (0) 2019.07.11
텔넷?  (0) 2019.07.10
게시판 만들기 (spring MVC) 오후7시반~ 오후10시까지  (0) 2019.06.19

문제

1. 연봉이 12000 이상되는 직원들의 LAST_NAME 및 연봉을 조회한다.

 

 (결과 예제)
LAST_NAME SALARY
 ------------------------- ----------
 Hartstein 13000
 King 24000
 Kochhar 17000
 De Haan 17000
 Russell 14000
 Partners 13500



//답 : 여기서 ASC를 더 해줬습니다.

SELECT LAST_NAME,SALARY FROM EMPLOYEES WHERE SALARY>12000 ORDER BY SALARY ASC;  

 2. 사원번호가 176 인 사람의 LAST_NAME 과 부서 번호를 조회한다.

 

 (결과 예제)
LAST_NAME DEPARTMENT_ID
 ------------------------- -------------
 Taylor 80


//답

SELECT LAST_NAME,DEPARTMENT_ID FROM EMPLOYEES WHERE EMPLOYEE_ID=176;

 

 3. 연봉이 5000 에서 12000의 범위 이외인 사람들의 
    LAST_NAME 및 연봉을 조회힌다.

 

 (결과 예제)

 

LAST_NAME SALARY
 ------------------------- ----------
 OConnell 2600
 Grant 2600
 Whalen 4400
 Hartstein 13000
 King 24000
 ...

//답 :
SELECT LAST_NAME,SALARY FROM EMPLOYEES WHERE NOT SALARY BETWEEN 5000 AND 12000;

 

 4. 1998/02/20 일부터 1998/05/01 사이에 고용된 사원들의 LAST_NAME 사번, 고용일자를 조회한다.
- 고용일자 순으로 정렬한다.

 


 (결과 예제)

 

LAST_NAME JOB_ID HIRE_DATE
 ------------------------- ---------- ----------
 Fleaur SH_CLERK 1998/02/23
 Urman FI_ACCOUNT 1998/03/07
 Matos ST_CLERK 1998/03/15
 Bloom SA_REP 1998/03/23
 Taylor SA_REP 1998/03/24
 Olsen SA_REP 1998/03/30
 Patel ST_CLERK 1998/04/06
 Livingston SA_REP 1998/04/23
 Walsh SH_CLERK 1998/04/24



//답

SELECT LAST_NAME,EMPLOYEE_ID,HIRE_DATE  FROM EMPLOYEES WHERE HIRE_DATE BETWEEN '1998-02-20' AND '1998-05-01'; 

 

 5. 20 번 및 50 번 부서에서 근무하는 모든 사원들의 
    LAST_NAME 및 부서 번호를 알파벳순으로 조회한다.

 


 (결과 예제)

 

LAST_NAME DEPARTMENT_ID
 ------------------------- -------------
 Atkinson 50
 Bell 50
 Bissot 50
 Bull 50
 Cabrio 50
 Chung 50
 ...

 

//답

SELECT LAST_NAME,DEPARTMENT_ID FROM EMPLOYEES WHERE DEPARTMENT_ID=20 OR DEPARTMENT_ID=50 

ORDER BY LAST_NAME ASC;

 

 

 6. 20 번 및 50 번 부서에 근무하며, 연봉이 5000 ~ 12,000 사이인 사원들의 LAST_NAME 및 연봉을 조회한다.

 

 (결과 예제)

 

EMPLOYEES SALARY
 ------------------------- ----------
 Fay 6000
 Weiss 8000
 Fripp 8200
 Kaufling 7900
 Vollman 6500
 Mourgos 5800


//답 : 저는 찾기 쉽게 이름을 알파벳순서대로 해보았습니다.

SELECT LAST_NAME,SALARY FROM EMPLOYEES WHERE SALARY 

BETWEEN 5000 AND 12000 AND DEPARTMENT_ID=20 OR DEPARTMENT_ID=50 ORDER BY LAST_NAME ASC;

 

 7. 1994년도에 고용된 모든 사람들의 LAST_NAME 및 고용일을 조회한다.

 

 (결과 예제)
LAST_NAME HIRE_DATE
 ------------------------- ----------
 Mavris 1994/06/07
 Baer 1994/06/07
 Higgins 1994/06/07
 Gietz 1994/06/07
 Greenberg 1994/08/17
 Faviet 1994/08/16
 Raphaely 1994/12/07


답 :

SELECT LAST_NAME,HIRE_DATE FROM EMPLOYEES WHERE HIRE_DATE BETWEEN '1994-01-01' AND '1994-12-31';

 

 8. 매니저가 없는 사람들의 LAST_NAME 및 JOB_ID 를 조회한다.
 (결과 예제)

 

LAST_NAME JOB_ID
 ------------------------- ----------
 King AD_PRES

 

답 :

SELECT LAST_NAME,JOB_ID FROM EMPLOYEES WHERE MANAGER_ID IS NULL;

 

 9. 커미션을 버는 모든 사원들의 LAST_ANME, 연봉 및 커미션을 조회한다.
- 연봉 역순, 커미션 역순차로 정렬한다.

 

 (결과 예제)
LAST_NAME SALARY COMMISSION_PCT
 ------------------------- ---------- --------------
 Russell 14000 .4
 Partners 13500 .3
 Errazuriz 12000 .3
 Ozer 11500 .25
 Cambrault 11000 .3
 ...


답 :

SELECT LAST_NAME,SALARY,COMMISSION_PCT FROM EMPLOYEES WHERE COMMISSION_PCT IS NOT NULL 

ORDER BY SALARY DESC;

 

 10. LAST_NAME 의 네번째 글자가 a 인 사원들의 LAST_NAME 을 조회한다.

 

 (결과 예제)
LAST_NAME
 -------------------------
 Doran
 Errazuriz
 Fleaur
 Kumar
 McCain
 Pataballa
 Sciarra
 Sewall
 Tuvault
 Urman

 

답 :

SELECT LAST_NAME FROM EMPLOYEES WHERE LAST_NAME LIKE '___a%';

 

출처: https://cocomo.tistory.com/117 [Cocomo Coding]

'RDB > Query Practice' 카테고리의 다른 글

쿼리연습 컬럼Comment보기  (0) 2019.07.17
쿼리연습  (0) 2019.07.02
HR계정 문제  (0) 2019.07.01
HR 계정 문제  (0) 2019.06.19

Git Archive : 소스코드만 추출할수 있는 명령 

 

 

저장소에 대해서 이해할 수 있도록 README.MD를 만들어 놓음

==>github사이트

 

여기서 말하는 #은 글머리를 뜻함

##일 경우 더 작아짐

소스코드 블록할때 ```이 특수문자는 키보드1옆에 있스니다.

```하고 원하는 언어를 써주세요.

블로그 주소 사이에 칸띄우지 마세요.

+ Recent posts