IBatis 문서 원본 보기
←
IBatis
둘러보기로 가기
검색하러 가기
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
Java에서 SQL Maps and Data Access Objects (DAO)로 알려진 Database 연동 플랫폼인 iBatis를 정리 한다. *홈페이지 : http://ibatis.apache.org/ *다운로드 : http://ibatis.apache.org/java.cgi *라이선스 : *플랫폼 : <br> ==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 | <typeAlias alias="Account" type="org.apache.domain.Account" /> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| typeHandler | <typeHandler javaType="String" callback="com.StringTypeHandler"/> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| properties | <properties resource="SqlMapConfig.properties" /> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| sqlMap | <sqlMap resource="sqlMaps/board.xml" /> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| transactionManager | <transactionManager type="JDBC"> <dataSource type="DBCP"> <property name="JDBC.Driver" value="${driver}" /> <property name="JDBC.ConnectionURL" value="${url}" /> <property name="JDBC.Username" value="${username}" /> <property name="JDBC.Password" value="${password}" /> <property name="JDBC.DefaultAutoCommit" value="false" /> </dataSource> </transactionManager> |} ===Mapper file=== *Parameter, Query 문에서 해당 변수를 매개 변수로 사용 :* #name# :* #name:VARCHAR#, #mailDomainSeq:INTEGER# :* #nameArray[]# *Variable : $~$, 해당 변수로 Query문을 직접 생성 * ? : * <![CDATA[ <= ]]> {|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%"| <resultMap class="boardbean" id="boardbean"> <result property="postId" column="post_Id"/> <result property="seq" column="SEQ" jdbcType="INTEGER" /> <result property="detail" resultMap="Catetory.ChildMap"/> </resultMap> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| parameterMap | <parameterMap class="boardbean" id="boardbean"> <parameter property="postId" /> </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;"|parameterMap |전달되는 parameter |- |valign="top" style="background-color:#eee;"|resultClass |반환되는 resultMap의 class를 지정 |- |valign="top" style="background-color:#eee;"|resultMap |반환되는 값 |- |valign="top" style="background-color:#eee;"|cacheModel | |- |valign="top" style="background-color:#eee;"|Table Join시 | *resultMap 선언 <resultMap id="parent" class="parentMap"> <result property="child" resultMap="catetory.childMap"/> </resultMap> *SQL문 선언 from parentTable a '''left outer join childTable b on''' a.SEQ = b.PARENT_SEQ |} <select id="readDeletedScheduleListAfterSyncTime" parameterClass="map" resultMap="schedulerResult"> select * from parentTable a left outer join childTable b on a.SEQ = b.PARENT_SEQ where mail_user_seq = #mailUserSeq# and outlook_sync = 'delete' and modify_time <![CDATA[ >= ]]> #syncTime# order by start_date asc limit #skipResult#, #maxResult# </select> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| selectKey | <selectKey resultClass="int" keyProperty="bbsId"> select case when max(bbs_id) is null then 1 else max(bbs_id)+1 end from tscheduler </selectKey> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| insert | <insert id="saveShareFolder" parameterClass="map"> insert into shf_shr_folder (mail_user_seq, folder_uid) values (#userSeq#, #fUid#) </insert> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| update | <update id="modifyAuthShareTargetFolder" parameterClass="webfoldershare"> update shf_shr_target set share_auth = #auth#, modify_time = #curTime# where folder_uid = #fuid# and share_value = #email# </update> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| delete | <delete id="deleteShareTargetFolder" parameterClass="int"> delete from shf_shr_target where folder_uid = #value# </delete> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| dynamic | *prepend : 동적 SQL문을 생성하기 전에 추가할 문자열 *open : 시작하기 전에 추가할 문자열 *close : 시작 후에 추가할 문자열 *conjunction : SQL문 생성 사이 사이에 추가할 문자열 *compareProperty : 비교되는 property *compareValue : 비교할 값 <dynamic prepend="WHERE"> <iterate property="postId" conjunction="," open="post_id IN (" close=")" > #postId[]# </iterate> </dynamic> <dynamic prepend="and"> <isGreaterThan property="userSeq" compareValue="0"> mail_user_seq = #userSeq# </isGreaterThan> </dynamic> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| 연산 | *iterate : <iterate property="postId" conjunction="," open="post_id IN (" close=")" > *isEqual : <isEqual property="type" compareValue="name"> *isNotEqual : <isNotEqual property="a" compareValue="K"></isNotEqual> *isGreaterEqual : <isGreaterEqual property="pageLineCnt" compareValue="0" prepend=","> *isGreaterThan : <isGreaterThan property="userSeq" compareValue="0"> *isLessEqual *isLessThan *isNull : <isNull property="a"></isNull> *isNotNull : <isNotNull property="userSeqs"> *isEmpty : <isEmpty property="a"></isEmpty> *isNotEmpty : <isNotEmpty property="a"></isNotEmpty> *isPropertyAvailable : <isPropertyAvailable property="memberName" prepend=","> *isNotPropertyAvailable : <isNotPropertyAvailable property="a"></isNotPropertyAvailable> *isParameterPresent : *isNotParameterPresent : |- |align="center" style="color:#15470a; background-color:#91ce5c;"| cacheModel | <cacheModel id="decisionPathCache" type="MEMORY" readOnly="true" serialize="false"> <flushInterval hours="24"/> <flushOnExecute statement="SystemConfig.allCacheDelete"/> <property name="reference-type" value="SOFT"/> </cacheModel> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| sql | *여기서 선언한 SQL문을 include 태그로 호출하여 사용 한다. <sql id="getMember_Where_Clause" > </sql> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| include | *sql 태그로 선언한 SQL문을 삽입 한다. <include refid="getMember_Where_Clause" /> |- |align="center" style="color:#15470a; background-color:#91ce5c;"| procedure | |- |align="center" style="color:#15470a; background-color:#91ce5c;"| statement | <statement id="test" parameterClass="package.ClassName" > |- |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<MessageVO> ==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<String, Object> param = new HashMap<String, Object>(); param.put("mailDomain", domainSeq); param.put("userSeq", userSeq); sqlMap.update("~", param); *Delete sqlMap.delete("~", ~); ==참고 문헌== *[http://openframework.or.kr/Wiki.jsp?page=SqlmapsOfMaso ORM의 또 다른 핵 iBATIS SQLMaps] *[http://www.ibm.com/developerworks/kr/os-ibatis3/ iBATIS 3의 새로운 기능, 2010.3] *[http://micropilot.tistory.com/1352 Spring 2.5.6에서 SqlMapClientDaoSupport을 이용하여 iBATIS 2.3.4와 연동하는 예, 2009.12] *[http://ultteky.egloos.com/10528023 iBatis 정리, 2010.4] *[http://pelican7.egloos.com/2583678 iBATIS DynamicQuery 사용법] [[Category:오픈소스]] [[Category:Spring]]
IBatis
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
주요 메뉴
오픈소스 컨설팅
오픈소스
오픈소스 라이선스
오픈소스 커뮤니티
오픈소스 종류
오픈소스 현황
오픈소스 한글화
문자셋과 인코딩
Storage
Network
보안
고가용성
모니터링
오픈 API
오픈 서비스
Cloud
BigData
Android
산사랑 노트
둘러보기
인기 문서
최근 수정 문서
모든 문서
모든 분류
임의 문서
위키 사용법
자매 사이트
CMS
오비컨 홈페이지
오비컨 CMS
블로그
데모 - SuiteCRM
산사랑의 Twitter
산사랑의 Facebook
친구 사이트
공개SW 포털
OLIS
한국공개소프트웨어협회
AppCenter 지원본부
OLC
PSEG
개발자 블로그
블로터
개인 메뉴
메뉴 수정
양식함
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보