8、iBatis DAO
l 需要追加的jar文件:
Ø spring-ibatis.jar
Ø ibatis-2.3.0.677.jar(可以是其它2.x版本)
l 有关iBatis的使用,这里不详细说明,可以参考iBatis相关书籍,如《iBatis in Action》
(1) 定义SqlMap文件
l sql-map-config.xml
<sqlMapConfig>
<sqlMap resource="org/xqtu/samples/dao/sqlmap/user-sql.xml" />
</sqlMapConfig>
l user-sql.xml
<sqlMap namespace="User">
<resultMap id="userResult" class="org.xqtu.samples.dto.UserDto">
<result property="userid" column="USERID" />
<result property="password" column="PASSWORD" />
</resultMap>
<select id="selectUser" resultMap="userResult"
parameterClass="java.lang.String">
<![CDATA[
SELECT A.USERID AS USERID, A.PASSWORD AS PASSWORD
FROM USERS A
WHERE A.USERID = #USERID#
]]>
</select>
</sqlMap>
(2) 配置SqlMapClientTemplate(samples-dao-ibatis.xml)
<!-- iBatis DAO config -->
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>${ibatis.config.location}</value>
</property>
</bean>
<bean id="sqlMapClientTemplate"
class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
l SqlMapClientTemplate需要注入iBatis的SqlMapClient(通过Spring提供的SqlMapClientFactoryBean获取),以获得DataSource和SqlMap配置
l ${ibatis.config.location}在samples.properties中定义:
ibatis.config.location=/WEB-INF/classes/org/xqtu/samples/dao/sqlmap/sql-map-config.xml
(3) 实现DAO接口
public class IBatisUserDaoImpl implements UserDao {
public List selectUser(String userid) {
return sqlMapClientTemplate.queryForList("selectUser", userid);
}
private SqlMapClientTemplate sqlMapClientTemplate;
public void setSqlMapClientTemplate(
SqlMapClientTemplate sqlMapClientTemplate) {
this.sqlMapClientTemplate = sqlMapClientTemplate;
}
}
l 注入SqlMapClientTemplate(samples-dao-ibatis.xml):
<bean id="userDao"
class="org.xqtu.samples.dao.impl.IBatisUserDaoImpl">
<property name="sqlMapClientTemplate"
ref="sqlMapClientTemplate" />
</bean>
l 使用SqlMapClientTemplate提供的方法(如queryForList())访问DB
l 这里可以看出DB层DAO实现方式的变更,对业务层是不受影响的