ibatis和spring的整合

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可以根据不同的框架在自行去创建了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值