Spring框架下的ibatis应用

针对ibatis,Spring配置文件如下:

Ibatis-Context.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  "http://www.springframework.org/dtd/spring-beans.dtd">

       <beans>

            <bean id="dataSource"  class="org.apache.commons.dbcp.BasicDataSource"

                destroy-method="close">

                        <property name="driverClassName">

                             <value>net.sourceforge.jtds.jdbc.Driver</value>

                       </property>

                       <property name="url">

                             <value>jdbc:jtds:sqlserver://127.0.0.1:1433/Sample</value>

                       </property>

                      <property name="username">

                             <value>test</value>

                      </property>

                      <property name="password">

                          <value>changeit</value>

                    </property>

               </bean>

              <bean id="sqlMapClient"    class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

                 <property name="configLocation">

                       <value>SqlMapConfig.xml</value>

                 </property>

               </bean>

             <bean id="transactionManager"   class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

                    <property name="dataSource">

                         <ref local="dataSource"/>

                   </property>

               </bean>

              <bean id="userDAO" class="net.xiaxin.dao.UserDAO">

                  <property name="dataSource">

                      <ref local="dataSource" />

                 </property>

                 <property name="sqlMapClient">

                       <ref local="sqlMapClient" />

                 </property>

           </bean>

           <bean id="userDAOProxy"   class="org.springframework.transaction.interceptor.TransactionPro

xyFactoryBean">

                 <property name="transactionManager">

                        <ref bean="transactionManager" />

                 </property>

                 <property name="target">

                          <ref local="userDAO" />

                  </property>

                  <property name="transactionAttributes">

                           <props>

                                     <prop key="insert*">PROPAGATION_REQUIRED</prop>

                                     <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>

                          </props>

                   </property>

             </bean>

</beans>

可以看到:

1. sqlMapClient节点

sqlMapClient节点实际上配置了一个sqlMapClient的创建工厂类。

configLocation属性配置了ibatis映射文件的名称。

2. transactionManager节点

transactionManager采用了Spring中的DataSourceTransactionManager。

3. userDAO节点

对应的,UserDAO需要配置两个属性,sqlMapClient和DataSource,

sqlMapClient将从指定的DataSource中获取数据库连接。

Ibatis映射文件非常简单:

sqlMapConfig.xml:

<sqlMapConfig>

<sqlMap resource="net/xiaxin/dao/entity/user.xml"/>

</sqlMapConfig>

net/xiaxin/dao/entity/user.xml

<sqlMap namespace="User">

<typeAlias alias="user" type="net.xiaxin.dao.entity.User" />

<insert id="insertUser" parameterClass="user">

INSERT INTO users ( username, password) VALUES ( #username#,

#password# )

</insert>

</sqlMap>

UserDAO.java:

public class UserDAO extends SqlMapClientDaoSupport implements

IUserDAO {

public void insertUser(User user) {

getSqlMapClientTemplate().update("insertUser", user);

}

}

SqlMapClientDaoSupport(如果使用ibatis 1.x版本,对应支持类是

SqlMapDaoSupport)是Spring中面向ibatis的辅助类,它负责调度DataSource、

SqlMapClientTemplate(对应ibatis 1.x版本是SqlMapTemplate)完成ibatis操作,

而DAO则通过对此类进行扩展获得上述功能。上面配置文件中针对UserDAO的属性设

置部分,其中的属性也是继承自于这个基类。

SqlMapClientTemplate对传统SqlMapClient调用模式进行了封装,简化了上层访问

代码。

猜你喜欢

转载自aoyouzi.iteye.com/blog/2038429