您的位置:首页 > 编程语言 > Java开发

ibatis和spring的整合

2016-03-04 13:30 357 查看
ibatis现在用的人估计很少了,但是一些比较老的项目还是会在用,今天就iBatis和Spring的整合说一说。

一、首先我们需要在spring的配置文件里面添加

1.数据源

<bean id="userDataSource" parent="dataSource">

        <property name="driverClass">

            <value>com.mysql.jdbc.Driver</value>

        </property>

        <property name="jdbcUrl">

            <value>jdbc:mysql://db.taobao.com:3306/tbtx_user</value>

        </property>

        <property name="username">

            <value>root</value>

        </property>

        <property name="password">

            <value>12345678</value>

        </property>

    </bean>

2.Spring提供的用于构建ibatis的客户端sqlmapclient对象工厂

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

        <property name="configLocation" value="classpath:sqlmap-config-user.xml" />

        <property name="dataSource" ref="userDataSource" />

    </bean>

3.事务

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

        <property name="dataSource" ref="userDataSource" />

    </bean>

   <bean id="userTransactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">

        <property name="transactionManager" ref="userTransactionManager" />

    </bean>

添加这些配置后我们就将iBatis和Spring基本整合了,此整合提供了数据库的数据源,iBatis的操作数据库客户端的对象工厂,可以获取对象,事务控制

二、我们在添加DAO来操作数据库,创建一个IBasicDAO 接口,提供基本的CURD,而DAO还需要一个SqlMapClientTemplate 对象来操作数据库,而SqlMapClientDaoSupport 类里面有getSqlMapClientTemplate ()方法,我们可以将一个基础的DAO继承SqlMapClientDaoSupport ,例如

public interface IBasicDAO {

    public abstract Object insertObject(String sqlId, Object obj);

    //还可以定义其他的方法,这里不一一列举了

}

public class BasicDAOIbatis extends SqlMapClientDaoSupport implements IBasicDAO {

    /**

     * 保存对象

     * 

     * @param sqlId

     * @param object

     * @return

     */

    public Object insertObject(String sqlId, Object obj) {

        Assert.notNull(obj, "要保存的对象类型不能为空");

        return this.getSqlMapClientTemplate().insert(sqlId, obj);

    }

}

基础的功能和DAO定义好了,我们可以根据不同的业务逻辑来定义自己的DAO,例如

public class ContentDAOI{

public List<ContentRelateItem> queryContentItems(List<Integer> itemIds);public 

}

DAO的实现类ContentDAOImpl 

public class ContentDAOImpl extends BasicDAOIbatis implements IContentDAO {

   @Override

    public List<ContentRelateItem> queryContentItems(List<Integer> itemIds) {

        return (List<ContentRelateItem>) this.getSqlMapClientTemplate().queryForList("findContentItemsByIds", itemIds);

    }

}

这里最关的一步还是获取SqlMapClientTemplate对象,使DAO能有操作数据库的能力。

这其实就是MVC中的M了,其他的VC可以根据不同的框架在自行去创建了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: