详参:http://www.mybatis.org/spring/zh/getting-started.html


MyBatis-Spring简介:

MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 使用这个类库中的类, Spring 将会加载必要的 MyBatis 工厂类和 session 类。 这个类库也提供一个简单的方式来注入 MyBatis 数据映射器和 SqlSession 到业务层的 bean 中。 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring MyBatis-Spring 来构建应用程序代码。

使用MyBatis-Spring时,仍然首先载入Spring的上下文xml文件,其中可以定义一条MyBatisbean位置,如下:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="configLocation" value="classpath:spring/dao/mybatis-config.xml"/>
  <property name="dataSource" ref="dataSource" />
</bean>

MyBatis注入:

一旦配置好,可以用注入其它任意 Spring bean 相同的方式直接注入映射器到你的 business/service 对象中MapperFactoryBean 处理 SqlSession 的创建和关闭它。如果使用了 Spring 的事务,那么当事务完成时,session 将会提交或回滚。最终,任何异常都会被翻译成 Spring DataAccessException异常。


SqlSession

SqlSessionTemplate 是 MyBatis-Spring 的核心,这个类负责管理 MyBatis 的 SqlSession, 调用 MyBatis 的 SQL 方法, 翻译异常。 可以使用SqlSessionFactory作为构造器构造。SqlSessionTemplate 是线程安全的, 可以被多个 DAO 所共享使用。

MyBatis ,你可以使用 SqlSessionFactory 来创建 SqlSession。一旦你获得一个 session 之后,你可以使用它来执行映射语句,提交或回滚连接,最后,当不再需要它的时 , 你可以关闭 session 

使用 MyBatis-Spring 之后, 你不再需要直接使用 SqlSessionFactory ,因为你的 bean 可以通过一个线程安全的 SqlSession 来注入,基于 Spring 的事务配置 来自动提交,回滚,关闭 session

注意通常不必直接使用 SqlSession 在大多数情况下 MapperFactoryBean, 将会在 bean 中注入所需要的映射器。

SqlSessionTemplate 有一个使用 ExecutorType 作为参数的构造方法。这允许你用SqlSessionTemplate来创建对象(创建SqlSession实例),如下:

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
  <constructor-arg index="0" ref="sqlSessionFactory" />
  <constructor-arg index="1" value="BATCH" />
</bean>
这是一个批量SqlSession,可以执行批量操作。

public void insertUsers(User[] users) {
   for (User user : users) {
     sqlSession.insert("org.mybatis.spring.sample.mapper.UserMapper.insertUser", user);
   }
 }

注入映射器:

为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类 可以让你直接注入数据映射器接口到你的 service 层 bean 中。当使用映射器时,你仅仅如调 用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。

没有必要在 Spring 的 XML 配置文件中注册所有的映射器。相反,你可以使用一个 MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 动 将 它 们 创 建 成 MapperFactoryBean。(!项目中使用该方法

posted on 2016-05-04 12:01  hh6plus  阅读(328)  评论(0编辑  收藏  举报