국비 27~32일차 mybatis 정리
2021. 2. 23. 17:56
Mybatis
- Preparedstatement
데이터 컬럼 하나하나 꺼내오는 작업 복잡함
while(rs.next()){
int empno = rs.getInt("empno");
String ename = rs.getString("ename");
String dname = rs.getString("dname");
String loc = rs.getString("loc");
int sal = rs.getInt("sal");
String hiredate = rs.getString("hiredate");
System.out.println("hiredate > " + hiredate );
String state = rs.getString("state");
Employee emp = null;
- 이런 작업이 반복적으로 발생하는 단점
configuration.xml
db연결, mapper등록, dto alias 설정
mapper -> 실제 DB연동
- 실제 sql을 가지고 있고 sql에 id를 할당
DB연동에 필요한 4가지 정보다 Mapper가 어디있는지 기재
factory
- configuration을 읽어와서 sql 사용 가능하게끔 해줌(mapper를 사용해서)
- 기존에 service를 활용했는데 여기선 sqlsession을 사용할거임
- sqlsession을 DAO에 넘기면서 mapper에 담아둔 sql중 id에 맞는 sql 실행
- MySqlSession
- configuration의 자원들과 mapper에 등록된 select문을 가져와 실행하는 공장
에러코드 | 원인 |
---|---|
java.lang.ExceptionInInitializerError | configuration 문제 초기화 못시키는중 |
java.sql.SQLException: Error setting driver on UnpooledDataSource. | driver문제 |
java.io.IOException: Could not find resource DeptMappe.xml | mapper 경로 |
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for selectAll | mapper에서 id문제 |
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for selectA | dao에서 id 잘못 작성 |
: java.lang.ClassNotFoundException: Cannot find class: com.dto.Dep | 경로 잘못 작성 |
java.sql.SQLSyntaxErrorException: | mapper/sql구문 작성 오류 |
java.sql.SQLSyntaxErrorException: ORA-00984: column not allowed here | mapper/쿼리 잘못 작성 |
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.dept.DeptMapper2.selectByDeptnoHashMap | configuration에 mapper등록 안됨 |
Could not resolve type alias 'Dept'. | alias 오류 |
- mapper.xml에서 부등호 사용할때
<select id="test" parameterType="int" resultType="String">
<![CDATA[
SELECT TEST_DESC FROM TB_Test WHERE TEST_ID < #{idx}
]]>
</select>
or
<select id="test" parameterType="int" resultType="String">
SELECT TEST_DESC FROM TB_Test WHERE TEST_ID <![CDATA[<]]> #{idx}
</select>
rowbounds
- 인덱스 번호로 특정갯수(시작번호, 꺼내올 개수) 출력
- dao파일
public List<Dept> selectTopN(SqlSession session, String loc, int offset, int limit) {
List<Dept> dept = session.selectList("com.dept.DeptMapper5.topNLoc", loc, new RowBounds(offset, limit));
return dept;
}
'ETC > 국비교육' 카테고리의 다른 글
국비 34일차 html(colspan, rowspan, ol, li, dl, div, span, form) (0) | 2021.02.24 |
---|---|
국비 33일차 Html (0) | 2021.02.23 |
국비 26일차 JDBC(delete, update, 클래스 연동) (0) | 2021.02.10 |
국비 25일차 JDBC(DB접근, Select, insert) (0) | 2021.02.08 |
국비 24일차 컬렉션 List, HashMap 익숙해지기 (0) | 2021.02.05 |