- iBatis 환경 설정
- sqlMapConfig.xml
- Mapper file
- DAO 프로그램
- SqlMapClient
- query
- 참고 문헌
Java에서 SQL Maps and Data Access Objects (DAO)로 알려진 Database 연동 플랫폼인 iBatis를 정리 한다.
홈페이지 : http://ibatis.apache.org/
라이선스 :
플랫폼 :
iBatis 환경 설정
ORM(Object Relational Mapping)
데이터베이스의 레코드를 직접 Java Class에 매핑하고 XML 형태의 SQL 문을 실행하는 Persistence Layer를 담당하는 Framework 개발 모델
/WEB-INF/classes/sqlMapConfig.xml : DB 정보와 mapper file 정보 등의 환경 설정 파일
mapper file (~Map.xml) : 실제 SQL문을 작성하는 XML 파일
sqlMapConfig.xml
{|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center"
|-
|width="20%" align="center" style="color:#15470a; background-color:#91ce5c;"|
settings
|width="80%"|
cacheModelsEnabled : true. 캐시 가능
enhancementEnabled : false. 런타임시 바이트 코드 기능 향상
lazyLoadingEnabled : true
maxRequests : 512
maxSessions : 128
maxTransactions : 32
useStatementNamespaces : false align="center" style="color:#15470a; background-color:#91ce5c;" typeAlias
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
typeHandler
|
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
properties
|
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
sqlMap
|
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
transactionManager
|
|}
Mapper file
Parameter, Query 문에서 해당 변수를 매개 변수로 사용
Variable : $~$, 해당 변수로 Query문을 직접 생성
? :
{|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center"
|-
|width="20%" align="center" style="color:#15470a; background-color:#91ce5c;"|
resultMap
|width="80%"|
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
parameterMap
|
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
select
|
{|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center"
|-
|width="25%" valign="top" style="background-color:#eee;"|id
|
|-
|valign="top" style="background-color:#eee;"|parameterClass
전달되는 parameter의 class를 지정 |
---|
valign="top" style="background-color:#eee;" |
전달되는 parameter |
- |
valign="top" style="background-color:#eee;" |
반환되는 resultMap의 class를 지정 |
- |
valign="top" style="background-color:#eee;" |
반환되는 값 |
- |
valign="top" style="background-color:#eee;" |
- |
valign="top" style="background-color:#eee;" |
resultMap 선언
SQL문 선언
from parentTable a
'''left outer join childTable b on''' a.SEQ = b.PARENT_SEQ
|}
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
selectKey
|
select case when max(bbs_id) is null then 1 else max(bbs_id)+1 end
from tscheduler
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
insert
|
insert into shf_shr_folder (mail_user_seq, folder_uid)
values (#userSeq#, #fUid#)
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
update
|
update shf_shr_target set share_auth = #auth#, modify_time = #curTime#
where folder_uid = #fuid# and share_value = #email#
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
delete
|
delete from shf_shr_target where folder_uid = #value#
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
dynamic
|
prepend : 동적 SQL문을 생성하기 전에 추가할 문자열
open : 시작하기 전에 추가할 문자열
close : 시작 후에 추가할 문자열
conjunction : SQL문 생성 사이 사이에 추가할 문자열
compareProperty : 비교되는 property
compareValue : 비교할 값
#postId[](.md)#
mail_user_seq = #userSeq#
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
연산
|
iterate :
isEqual :
isNotEqual :
isGreaterEqual :
isGreaterThan :
isLessEqual
isLessThan
isNull :
isNotNull :
isEmpty :
isNotEmpty :
isPropertyAvailable :
isNotPropertyAvailable :
isParameterPresent :
isNotParameterPresent : align="center" style="color:#15470a; background-color:#91ce5c;" cacheModel
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
sql
|
여기서 선언한 SQL문을 include 태그로 호출하여 사용 한다.
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
include
|
sql 태그로 선언한 SQL문을 삽입 한다.
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
procedure
|
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
statement
|
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
Collection
|
|-
|align="center" style="color:#15470a; background-color:#91ce5c;"|
RowHandler
|
|}
Mapper file 사용법
Cache (CacheModel)
Sub Query 사용
List
DAO 프로그램
SqlMapClient
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
query
Select
User user = (User) sqlMap.queryForObject(id, parameter);
sqlMap.queryForList(id, parameter);
sqlMap.queryForMap(id, parameter, key);
Insert
Map map = new HashMap();
map.put("mailUserSeq", userSeq);
map.put("agingDay", agingDay);
sqlMap.insert("~", map);
Update
HashMap param = new HashMap();
param.put("mailDomain", domainSeq);
param.put("userSeq", userSeq);
sqlMap.update("~", param);
Delete
sqlMap.delete("~", ~);