<sqlMap namespace="user-query">
<typeAlias alias="user" type="user.model.User" />
<resultMap id="resultUser" class="user">
<result property="id" column="ID" />
<result property="password" column="PASSWORD" />
<result property="name" column="NAME" />
<result property="ssn" column="SSN" />
<result property="address" column="ADDRESS" />
<result property="post" column="POST" />
<result property="phone" column="PHONE" />
<result property="email" column="EMAIL" />
<result property="mileage" column="MILEAGE" />
<result property="birthday" column="BIRTHDAY" />
<result property="selected" column="SELECTED" />
<result property="grade" column="GRADE" />
<result property="genre" column="GENRE" />
<result property="favoriteSinger1" column="FAVORITESINGER1" />
<result property="favoriteSinger2" column="FAVORITESINGER2" />
</resultMap>
위와같이 사용한 것 처럼 column 은 대문자로 명시(소문자도 상관이 없긴하지만 Look and Feel!!.....T^T) 특히 이놈도 상당히 예민한지라...오타 같은것에 주의할 것을 요한다.
<insert id="UserInsert" parameterClass="user">
INSERT INTO TEST(ID,PASSWORD,NAME,SSN,ADDRESS,POST,PHONE,EMAIL,MILEAGE,GRADE) values(#id#,#password#,#name#,#ssn#,#address#,#post#,#phone#,#email#,#mileage#,#grade#)
</insert>
<select id="UserSelect" resultMap="resultUser">
SELECT * FROM TEST WHERE id = #id#
</select>
<select id="UserSelectAll" resultMap="resultUser">
SELECT * FROM TEST
</select>
<delete id="UserDelete" parameterClass="user">
DELETE FROM TEST WHERE id =#id#
</delete>
<update id="UserUpdate" parameterClass="user">
UPDATE TEST SET ID=#id#,PASSWORD=#password#,NAME=#name#,SSN=#ssn#,ADDRESS=#address#,POST=#post#,PHONE=#phone#,EMAIL=#email#,MILEAGE=#mileage#,GRADE=#grade# WHERE ID=#id#
</update>
위와같이 쿼리 를 사용할 경우 공백으로 두었을때 eclipse 에서 보이지 않는 문자가 쓰여져있을 경우 Exception 이 뜬다.
이럴경우에는 당연히 <select>select * from test</select>
쿼리문과 <select></select> 사이의 공백을 제거해 준후에
보기 좋은 상태로 엔터를 치면 해결된다.
그리고 쿼리실행시
getSqlMapClientTemplate().update("UserUpdate", user);
와 같이 iBatis 설정 xml 파일의 각 쿼리의 id로서 쿼리를 불러서 실행한다.
.....SqlMapClinetTemplate() 실행시에는 xml 파일에 설정(아래의
<..-servlet> 의 내용) 및 구현 메소드에서는 SqlMapClientDaoSupport 를 extends 하여 사용하여야 한다. 그리고 org.springframework.orm.ibatis.support.SqlMapClientDaoSupport 을 import 하여야 한다.
<..-servlet>
<!-- ibatis 설정 -->
<bean id="userDAO" class="user.dao.UserDAOImpl">
<property name="sqlMapClientTemplate"
ref="sqlMapClientTemplate" />
</bean>
<!-- ibatis 설정 끝-->
<bean id="sqlMapClientTemplate"
class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient">
<ref bean="sqlMapClient" />
</property>
</bean>
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation"
value="/WEB-INF/SqlMapConfig.xml" />
</bean>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@localhost:1521:MENGINE</value>
</property>
<property name="username">
<value>mengine</value>
</property>
<property name="password">
<value>mengine</value>
</property>
</bean>
대게 오타 및 컬럼과 프로퍼티(프로그램내에서 정의된 model..DTO) 와의 매핑에서 문제가 생기므로 주의할 것을 요한다.