MyBatis-Spring框架整合

1.介绍:

MyBatis-Spring的整合,帮助你使代码和Spring无缝对接,Spring会为你加载创建必须的MyBatis类,将会控制事物,翻译表达式,而且,还可以向Service Bean中注入映射器Mapper。

2.安装:

要运行MyBatis-Spring模块,需要包含mybatis-spring-1.0.0-SNAPSHOT.jar文件即可。并且在类路径中加入依赖。

如果你使用的Maven,那么在pom.xml文件中,追加下面的代码即可:

<dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.0.0-SNAPSHOT</version>
</dependency>

3.创建SqlSessionFactory

要使用MyBatis,你需要创建一个SqlSessionFactory的实例,MyBatis-Spring会在Spring启动的时候为你创建,下面这段配置,就是为你展示了需要创建SqlSessionFactoryBean的配置:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
</bean>

根据上面的代码,要设置一个SqlsessionFactory,需要一个数据源,如下代码所示:

    <!--定义数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${driverName}"></property>
        <property name="url" value="${url}"></property>
        <property name="username" value="${username}"></property>
        <property name="password" value="${password}"></property>
        <property name="maxActive" value="30"></property>
        <property name="maxIdle" value="10"></property>
        <property name="minIdle" value="5"></property>
        <property name="maxWait" value="5000"></property>
    </bean>

其中,driverName,url,username,password可以通过从其他属性文件中设置,如下代码所示:

    <!--配置数据源属性文件  -->       
    <context:property-placeholder location="jdbc.properties" /> 

当使用MyBatis-Spring时,在Spring的配置文件中应该包含transactionManager部分,
当注入映射器是,映射器列表也是需要的。

4.注入映射器

MyBatis-Spring允许你在Service Bean中注入映射器。当使用映射器时,就像调用Dao那样来调用映射器就可以了。

但是,你就不需要进行任何Dao实现的编码,因为MyBatis会为你进行。

使用注入的映射器,你的代码就不会出现任何MyBatis-Spring依赖和MyBatis依赖。

下面是一个简单的映射器,映射器就是一个接口:

public interface UserMapper {
    User getUser(String userId);
}

下面是你使用MyBatis创建映射器的方式:

<bean id="userMapper" class="org.mybatis.spring.MapperFactoryBean">
    <property name="sqlSessionFactory" ref="sqlSessionFactory" />
    <property name="mapperInterface" value="sample.UserMapper" />
</bean>

当使用映射器时,你不需要在spring的配置文件中创建映射器列表,因为映射器可以在Mybatis启动的时候自行完成注册。


现在你的映射器已经准备在Service对象中注入了

<bean id="testService" class="sample.testServiceImpl">
      <property name="userMapper" ref="userMapper" />
</bean>

5.使用SqlSessionDaoTemplate和SqlSessionDaoSupport

5.1 SqlSessionDaoTemplate

如果需要使用MyBatis的sqlsession,那么,需要使用SqlSessionDaoTemplate,因为这个对象能够创建一个新的SqlSession或者从当前活动的SqlSession。

它也可以给Spring的通用DataAccessException层次结构翻译表达式。

SqlSessionDaoTemplate可以使用SqlSessionFactory作为构造方法参数来创建。

SqlSessionDaoTemplate sessionTemplate = new SqlSessionTemplate(sqlSessionFactory);

如下面片段所示,你可以使用SqlSessionDaoTemplate来代替SqlSession执行MyBatis方法(selectOne,selectList…)

public User getUser(String userId) {
      return (User) sessionTemplate.selectOne("sample.UserMapper.getUser", userId);
}

SqlSessionDaoTemplate也提供一个通用的方法,使用一个自定义的SqlSessionCallback作为参数,这样你可以在一个SqlSession上执行多个方法:

public void insertUser(final User user) {
       getSqlSessionTemplate().execute(new SqlSessionCallback<Object>() {
                 public Object doInSqlSession(SqlSession sqlSession) throws SQLException {
                      sqlSession.insert("sample.UserMapper.insertUser", user);
                      sqlSession.insert("sample.UserMapper.insertAccount", user.getId());
                       return null;
                 }
       });
}


5.2 SqlSessionDaoSupport

SqlSessionDaoSupport是为你创建的SqlSessionDaoTemplate的支持类,这样,你就可以通过调用getSqlSessionTemplate()方法来使用:

public class UserMapperDaoImpl extends SqlSessionDaoSupport implements UserMapper {
          public User getUser(String userId) {
                 return (User) getSqlSessionTemplate().selectOne("sample.UserMapper.getUser", userId);
          }
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值