ÀüüÀûÀ¸·Î iBatisÀÇ ±âº»¼³Á¤Àº Å©°Ô ¹Ù²îÁö ¾Ê´Â´Ù. ´Ù¸¸ SpringFramework´Â DI¸¦ Áö¿øÇϱ⠶§¹®¿¡ ÀÌ ¼³Á¤¸¸ µé¾î°¡°Ô µÇ¸é ´Ù¸¥°Ô ¾ø´Ù.
1.web.xml ÀÇ context-param ºÎºÐ¿¡ ibatisÀÇ ¼³Á¤ÀÌ µé¾î°¡ ÀÖ´Â xml ÆÄÀÏÀÇ À§Ä¡¸¦ Á¤ÇØÁØ´Ù.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/applicationContext.xml,
/WEB-INF/config/applicationContext-iBatis.xml </param-value>
</context-param>
2. applicationContext-iBatis.xml ÆÄÀÏ¿¡ DataSource¸¦ ¼³Á¤ÇÏ°í DataSource¸¦ »ç¿ëÇÏ´Â sqlMapClient,sqlMapClient¸¦ »ç¿ëÇÏ´Â template¸¦ ¸¸µç´Ù.
template¸¦ »ç¿ëÇϱâ À§Çؼ´Â
spring-orm.jar ÆÄÀÏÀ» ¶óÀ̺귯¸®¿¡ Ãß°¡ÇØ¾ß ÇÑ´Ù.
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
<property name="username" value="user01"/>
<property name="password" value="user01"/>
<property name="initialSize" value="10"/>
<property name="maxActive" value="100"/>
<property name="maxIdle" value="16"/>
<property name="maxWait" value="2000"/>
</bean>
<bean id="sqlMapClient" class="
org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="
WEB-INF/config/sqlMapConfig.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="template" class="
org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient" ref="sqlMapClient"/>
</bean>
À§ÀÇ Datasource¸¦ ±¸Çö¹æ¹ýÀº DBCP¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ̱⠶§¹®¿¡ www.apache.org ¿¡ µé¾î°¡¼ commonms --> dbcp ¿¡¼ ´Ù¿î ¹ÞÀº ¶óÀ̺귯¸®¸¦ Ãß°¡ÇÏ¿©¾ß »ç¿ëÇÒ ¼ö ÀÖ´Ù.3. sqlMapClient¸¦ »ç¿ëÇϱâ À§Çؼ ·ÎµùÇÑ configLocationÀÎ sqlMapConfig.xml ÆÄÀÏÀ» ¼³Á¤ÇÑ´Ù.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0 //EN" "
http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="true"
/>
<sqlMap resource="kr/co/springboard/dao/sqlmap/sqlMapBoard.xml"/></sqlMapConfig>
4. À§ÀÇ »¡°£»öÀÇ sqlMapBoard.xml ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"
http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<typeAlias alias="Board" type="kr.co.springboard.dto.BoardDTO"/>
<resultMap class="Board" id="boardResult">
<result property="seq" column="SEQ"/>
<result property="category" column="CATEGORY"/>
<result property="title" column="TITLE"/>
<result property="readCount" column="READ_COUNT"/>
<result property="writer" column="WRITER"/>
<result property="regDate" column="REG_DATE"/>
</resultMap>
<resultMap class="Board" id="boardFullResult">
<result property="seq" column="SEQ"/>
<result property="category" column="CATEGORY"/>
<result property="title" column="TITLE"/>
<result property="readCount" column="READ_COUNT"/>
<result property="writer" column="WRITER"/>
<result property="regDate" column="REG_DATE"/>
<result property="contents" column="CONTENTS"/>
</resultMap>
<select id="selectBoardTotalCount" resultClass="int">
SELECT COUNT(0)
FROM MY_BOARD
</select>
<select id="selectBoardList" parameterClass="Board" resultMap="boardResult">
<![CDATA[
select
*
from
(
select *
from
( select * from MY_BOARD order by SEQ ASC )
where rownum <= #startNum#
order by SEQ desc
)
where rownum <= #countPerPage#
]]>
</select>
<insert id="insertBoard" parameterClass="Board">
INSERT INTO
MY_BOARD
(SEQ,CATEGORY,TITLE,WRITER,REG_DATE,READ_COUNT,CONTENTS)
VALUES
(MY_BOARD_SEQ.NEXTVAL,#category#,#title#,#writer#,sysdate,0,#contents#)
</insert>
<select id="selectBoardItem" parameterClass="int" resultMap="boardFullResult">
SELECT
*
FROM MY_BOARD
WHERE SEQ=#seq#
</select>
<update id="updateBoardReadCount" parameterClass="int">
UPDATE
MY_BOARD
SET
READ_COUNT = READ_COUNT + 1
WHERE SEQ = #seq#
</update>
<update id="updateBoardItem" parameterClass="Board">
UPDATE
MY_BOARD
SET
CATEGORY = #category#,
WRITER = #writer#,
TITLE = #title#,
CONTENTS = #contents#
WHERE SEQ = #seq#
</update>
<delete id="deleteBoardItem" parameterClass="int">
DELETE
FROM MY_BOARD
WHERE SEQ = #seq#
</delete>
</sqlMap>