8-1. iBatis
<2020.10.08 목요일>
- 9.iBatisTest폴더에 8.SingletonTest src 복사
- kr.or.ddit.util src에 SqlMapClientFactory.java 를 싱글톤으로 구현
=> 여러다오에서 사용하려고 (ibatis객체 1개로)
<2020.10.07>
프레임워크 iBatis
: DB자료 처리
: buildpath (ibatis-2.3.4.726.jar, ojdbc6.jar) 경로지정
: resuorce 폴더 생성 => SqlMapConfig.properties
- javaproject : 9.iBatisTest
- src :
- kr.or.ddit.basic >> MemberIbatisTest.java
- kr.or.ddit.member.vo >> MemberVO.java
- res :
- kr.or.ddit.sqlmap >> member.xml
- SqlMapConfig.properties
- SqlMapConfig.xml
- Referenced Libraries >> ibatis-2.3.4.726.jar, ojdbc6.jar
1.SqlMapConfig.xml
- DB와 연결하는 정보를 properties파일에 설정해 놓고 이 properties파일의
내용을 읽어와 설정한다.<properties resource="SqlMapconfig.properties"
- ibatis를 처리하기 위한 환경설정 부분
- useStatementNamespaces = "true" 부분 중요
<settings cacheModelsEnabled="true" enhancementEnabled="true"
lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
maxTransactions="5" useStatementNamespaces="true" />
- 각종 설정을 직접 기술해서 처리할 수도 있다.
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}" />
<property name="JDBC.ConnectionURL" value="${url}" />
<property name="JDBC.Username" value="${username}" />
<property name="JDBC.Password" value="${password}" />
</dataSource>
</transactionManager>
- 실제 처리할 SQL문은 xml문서로 따로 만든 후 그 xml문서와 아래와 같이 연결하여
사용한다.- 형식)
<sqlMap resource = "경로명/파일명.xml"/>
- 형식)
<sqlMap resource="kr/or/ddit/sqlmap/member.xml"/>
</sqlMapConfig>
2.일반.xml (예시 : member.xml)
- namespace 속성 : 아래에서 작성한 SQL작성을 호출할 때 같이 사용된다.
<sqlMap namespace="memberTest"
- 사용할 수 있는 기본적인 태그들
<select>~~~</select>
<insert>~~~</insert>
<update>~~~</update>
<delete>~~~</delete>
- 위 태그에서 사용되는 속성들
- ① id 속성 : 해당 태그를 호출할 때 태그의 namespace와 연결하여 사용하는 이름
- ② parameterClass 속성
: sql문에서 사용될 데이터가 들어있는 객체를 지정한다.
: 보통 VO클래스, 자바의 자료형 이름등이 사용된다.
: typeAlias로 지정한 alias명을 사용할 수 있다. - ③ resultClass 속성
: select문을 실행한 결과를 담은 객체를 지정한다.
: 보통 VO클래스나 자바의 자료형 이름을 사용한다.
3. ibatis 활용한 CRUD
- ① ibatis 사용할 준비단계
try {
//1-1. xml문서 읽어오기
Charset charset = Charset.forName("UTF-8"); //설정파일의 인코딩 설정
Resources.setCharset(charset);
Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml"); //xml파일 읽는 Reader객체를 리턴
//1-2. 위에서 읽어온 Reader객체를 이용하여 실제 작업을 진행할 객체 생성
SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);
rd.close();
catch(IOException ex) {
ex.printStackTrace();
}catch(SQLException ex) { //쿼리 끝났을 때 발생
ex.printStackTrace();
}
}
-
② 1번 부분 SqlMapClient 객체를 제공하는 부분을 다른 클래스로 빼서 싱글톤 패턴으로 해준다.
예시 NoticeBoard_iBatis / SqlMapClientFactory.java -
③ CRUD
- insert
: SqlMapClient객체 변수를 이용하여 쿼리문 실행
: SqlMapClient객체 smc.insert("namespace값.id값",파라미터객체);
: 반환값 => 성공하면 null이 반환된다. - select
- 결과가 여러개일 경우
: queryForList()메서드 사용
: 여러개의 레코드를 VO에 담은 후 이 VO데이터를 List에 추가해주는 작업을 자동으로 수행 - 결과가 1개인 경우
: queryForObject()메서드 사용
: 응답 결과가 1개가 확실할 경우에 사용
- 결과가 여러개일 경우
- update
: update()메서드의 반환값은 성공한 레코드 수이다. - delete
: delete()메서드의 반환값은 성공한 레코드 수이다.
- insert
Author And Source
이 문제에 관하여(8-1. iBatis), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zhyun1220/8-1.iBatis저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)