mybatis中文教程

来源:互联网 发布:工商网络监管工作总结 编辑:程序博客网 时间:2024/06/09 16:06
=
 
 
目录 
第一章 介绍 .................................................................................................................... 3 
1.1 整合动机 ............................................................................................................ 3 
1.2 要求 ................................................................................................................... 3 
1.3 感谢 ................................................................................................................... 3 
第二章 入门 .................................................................................................................... 4 
2.1 安装 ................................................................................................................... 4 
2.2 快速创建 ............................................................................................................ 4 
第三章 SqlSessionFactoryBean ........................................................................................... 6 
3.1 创建 ................................................................................................................... 6 
3.2 属性 ................................................................................................................... 6 
第四章 事务 .................................................................................................................... 8 
4.1 标准配置 ............................................................................................................ 8 
4.2 容器管理事务 ..................................................................................................... 8 
第五章 使用 SqlSession..................................................................................................... 9 
5.1 SqlSessionSupport ................................................................................................. 9 
5.2 SqlSessionTemplate ............................................................................................... 9 
第六章 MapperFactoryBean ............................................................................................ 11 
6.1 创建 ................................................................................................................. 11 
6.2 注入映射器 ....................................................................................................... 11 
6.3 自动配置 .......................................................................................................... 12 
第七章 使用 MyBatis API................................................................................................. 13 
第八章 示例代码 ........................................................................................................... 14 
 
 
 
第一章 介绍 
1.1 整合动机 
 
正如第二版,Spring 仅支持 iBatis2。那么我们就想将 MyBatis3 的支持加入到 Spring3.0
(参考 Spring 的 Jira 的问题)中。不幸的是,Spring 3.0 的开发在 MyBatis 3.0 官方发布前就
结束了。 因为 Spring 开发团队不想发布一个基于非发行版的MyBatis的整合支持, 那么 Spring
官方的支持就不得不等到至少 3.1 版本了。要在 Spring 中支持 MyBatis,MyBatis 社区认为现
在应该是自己团结贡献者和有兴趣的人一起来开始进行 Spring 和 MyBatis 整合的时候了。 
 
这个小类库就来创建丢失的粘贴 Spring 和 MyBtatis 这两个流行框架的胶水。减少用户
不得不来配置 MyBatis和 Spring 3.X 上下文环境的样板和冗余代码。 它还透明地增加了 Spring
对 MyBatis 事务的支持。 
1.2 要求 
 
在开始阅读本手册之前, 很重要的一点是你要熟悉 Spring 和 MyBatis 这两个框架还有和
它们有关的术语,本手册不会提供二者的背景内容,基本安装和配置教程。 
 
和 MyBatis 一样,MyBatis-Spring 也需要 Java 5 或更高版本。 
1.3 感谢 
 
非常感谢那些使得本项目成为现实的人们(按字母顺序排序) 。Eduardo Macarron,
Hunter Presnall和Putthibong Boonbong的编码工作, 测试和文档修改; Andrius Juozapaitis,
Giovanni Cuccu,Raj Nagappan和Tomas Pinos的贡献;而Simone Tripodi发现了这些人并
把他们带入项目之中。没有他们的努力,这个项目是不可能存在的。 
 
 
第二章 入门 
 
MyBatis-Spring 帮助了你的 MyBatis代码和 Spring 进行无缝整合。 使用这个类库中的类,
Spring 将会为你加载必要的 MyBatis 工厂和 session 类。 这个小类库也会提供一个简便的方式
向你的 service 层 bean 中注入 MyBatis 的数据映射器。最终,MyBatis-Spring 将会控制事务,
翻译 MyBatis 异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注) 。 
2.1 安装 
 
要使用 MyBatis-Spring 模块,你只需要包含 mybatis-spring-1.0.0-RC3.jar 文件,并
在类路径中加入依赖关系。 
 
如果你使用 Maven,那么在 pom.xml 中加入下面的代码即可: 
 
 
 
 
 
 
2.2 快速创建 
 
要和 Spring 一起使用 MyBatis,你需要在 Spring 应用上下文中定义至少两样东西:一个
SqlSessionFactory 和至少一个数据映射器类。 
 
在 MyBatis-Spring 中, SqlSessionFactoryBean 是用于创建 SqlSessionFactory.的。 要
配置这个工厂 bean,放置下面的代码在 Spring 的 XML 配置文件中: 
 
 
 
 
 
要注意 SqlSessionFactory 需要一个 DataSource.(数据源,译者注) 。这可以是任意
的 DataSource.,配置它就和配置其它 Spring 数据库连接一样。 
 
假设你有一个如下编写的数据映射器类: 
 
 
 
 
 
 
那么可以使用,像下面这样来把接口加入到 Spring 中: 
 
 
 
 
<dependency> 
<groupId>org.mybatis</groupId> 
<artifactId>mybatis-spring</artifactId> 
<version>1.0.0-RC3</version> 
</dependency> 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
<property name="dataSource" ref="dataSource" /> 
</bean> 
public interface UserMapper { 
@Select("SELECT * FROM user WHERE id = #{userId}") 
User getUser(@Param("userId") String userId); 

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
<property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" /> 
<property name="sqlSessionFactory" ref="sqlSessionFactory" /> 
</bean> 
 
要注意指定的映射器类必须是一个接口,而不是具体的实现类。在这个示例中,注解被
用来指定 SQL 语句,但是 MyBatis 的映射器 XML 文件也可以用。 
 
一旦配置好,你可以以注入其它任意 Spring 的 bean 相同的方式直接注入映射器到你的
business/service 对象中。MapperFactoryBean 控制 SqlSession 创建和关闭它。如果使用了
Spring 的事务,那么当事务完成时,session 将会提交或回滚。最终,任何异常都会被翻译成
Spring 的 DataAccessException 异常。 
 
调用 MyBatis 数据方法现在只需一行代码: 
 
 
 
 
User user = userMapper.getUser(userId); 
第三章 SqlSessionFactoryBean 
 
在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder.来创建。在
MyBatis-Spring 中,使用了 SqlSessionFactoryBean 来替代。 
3.1 创建 
 
要创建工厂 bean,放置下面的代码在 Spring 的 XML 配置文件中: 
 
 
 
 
 
要注意 SqlSessionFactoryBean 实现了 Spring 的 FactoryBean 接口(请参考 Spring 文
档的 3.8 章节部分) 。这就说明 Spring 最终创建的 bean 不是 SqlSessionFactoryBean 本身
完成的,但是工厂类 getObject()返回的方法的结果是基于那个类的。这种情况下,Spring
将会在应用启动时为你创建 SqlSessionFactory 对象,然后将它以 SqlSessionFactory 为
名来存储。在 Java 中,相同的代码是: 
 
 
 
 
在普通的 MyBatis-Spring 用法中, 你不需要使用 SqlSessionFactoryBean 或直接和其对
应的 SqlSessionFactory。而 session 工厂将会被注入到 MapperFactoryBean 中或其它扩展
了 SqlSessionDaoSupport 的 DAO(Data Access Object,数据访问对象,译者注)中。 
3.2 属性 
 
SqlSessionFactory 有一个必须的属性,就是 JDBC 的 DataSource。这可以是任意的
DataSource,配置和其它的 Spring 数据库连接是一样的。 
 
一个通用的属性是 configLocation,它是用来指定 MyBatis 的 XML 配置文件路径的。
如果基本的 MyBatis 配置需要改变, 那么这就是一个需要它的地方。 通常这会是<settings>
或<typeAliases>部分。 
 
要注意这个配置文件不需要是一个完整的 MyBatis 配置。确定地来讲,任意环境,数据
源和 MyBatis 的事务管理器都会被忽略。SqlSessionFactoryBean 会创建它自己的,使用这
些值定制 MyBatis的 Environment 时是需要的。 
 
如果 MyBatis 映射器 XML 文件在和映射器类相同的路径下不存在,那么另外一个需要
配置文件的原因就是它了。使用这个配置,有两种选择。第一是手动在 MyBatis 的 XML 配
置文件中使用<mappers>部分来指定类路径。第二是使用工厂 bean 的 mapperLocations 属
性。 
 
mapperLocations 属性一个资源位置的 list。这个属性可以用来指定 MyBatis 的 XML 映
射器文件的位置。 它的值可以包含 Ant 样式来加载一个目录中所有文件, 或者从基路径下递
归搜索所有路径。比如: 
 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
<property name="dataSource" ref="dataSource" /> 
</bean> 
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); 
SqlSessionFactory sessionFactory = factoryBean.getObject(); 
 
 
 
 
 
 
这会从类路径下加载在 sample.config.mappers 包和它的子包中所有的 MyBatis 映射器
XML 文件。 
 
在容器环境管理事务中,一个可能需要的属性是 transactionFactoryClass。我们可
以在第四章(事务)中来查看有关部分。 
 
 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
<property name="dataSource" ref="dataSource" /> 
<property name="mapperLocations" value="classpath*:sample/config/mappers/**/*.xml" /> 
</bean> 
第四章 事务 
 
一个使用 MyBatis-Spring 的主要原因是它允许 MyBatis 参与到 Spring 的事务中。而不是
给 MyBatis 创 建一 个新 的特 定的 事务 管理 器,MyBatis-Spring 利 用了 Spring 中的
DataSourceTransactionManager。 
 
一旦 Spring 的 PlatformTransactionManager 配置好了,你可以在 Spring 中以你通常的做
法来配置事务。@Transactional 注解和 AOP(Aspect-Oriented Program,面向切面编程,译
者注)样式的配置都是支持的。在事务期间,一个单独的 SqlSession 对象将会被创建和使
用。当事务完成时,这个 session 会以合适的方式提交或回滚。 
 
一旦事务创建之后,MyBatis-Spring 将会透明的管理事务。在你的 DAO 类中就不需要额
外的代码了。 
4.1 标准配置 
 
要开启 Spring 的事务处理,在你的 Spring 的 XML 配置文件中简单创建一个
DataSourceTransactionManager 对象: 
 
 
 
 
 
 
指定的 DataSource 可以是你通常使用 Spring 的任意 JDBC DataSource。这包含了连接
池和通过 JNDI 查找获得的 DataSource。 
 
要注意, 为事务管理器指定的 DataSource 必须和用来创建 SqlSessionFactoryBean 的
是同一个数据源,否则事务管理器就无法工作了。 
4.2 容器管理事务 
 
如果你正使用一个 JEE 容器而且想让 Spring 参与到容器管理事务(Container managed 
transactions,CMT,译者注)中,那么 Spring 应该使用 JtaTransactionManager 或它的容
器指定的子类来配置。做这件事情的最方便的方式是用 Spring 的事务命名空间: 
 
 
 
在这种配置中,MyBatis 将会和其它由 CMT 配置的 Spring 事务资源一样。Spring 会自动
使用任意存在的容器事务,在上面附加一个 SqlSession。如果没有开始事务,或者需要基
于事务配置,Spring 会开启一个新的容器管理事务。 
 
注意,如 果你想 使用 CMT ,而不 想使用 Spring 的事务 管理, 你就必 须配置
SqlSessionFactoryBean 来使用基本的 MyBatis 的 ManagedTransactionFactory:: 
 
 
 
 
<bean id="transactionManager" 
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
<property name="dataSource" ref="dataSource" /> 
</bean> 
<tx:jta-transaction-manager /> 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
<property name="dataSource" ref="dataSource" /> 
<property name="transactionFactoryClass" 
value="org.apache.ibatis.transaction.managed.ManagedTransactionFactory" /> 
</bean> 
第五章 使用 SqlSession 
 
在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。一旦你获得一个
session 之后,你可以使用它来执行映射语句,提交或回滚连接,最后,当不再需要它的时
候, 你可以关闭 session。 使用 MyBatis-Spring 之后, 你不再需要直接使用 SqlSessionFactory
了,因为你的 bean 可以通过一个线程安全的 SqlSession 来注入,基于 Spring 的事务配置
来自动提交,回滚,关闭 session。 
5.1 SqlSessionSupport 
 
SqlSessionDaoSupport 是一个抽象的支持类,用来为你提供 SqlSession。调用
getSqlSession()方法你会得到一个线程安全的 SqlSession, 之后可以用于执行 SQL 方法,
就像下面这样: 
 
 
 
 
 
 
 
 
通常 MapperFactoryBean 是这个类的首选,因为它不需要额外的代码。但是,如果你
需要在 DAO 中做其它非 MyBatis 的工作或需要具体的类,那么这个类就很有用了。 
 
SqlSessionDaoSupport 的 配 置 和
MapperFactoryBean 很 相 似 。 它 需 要 设 置
sqlSessionFactory 或 sqlSessionTemplate 属性。 这些被明确地设置或由 Spring 来自动装
配。如果两者都被设置了,那么 SqlSessionFactory 是被忽略的。 
 
假设 UserMapperImpl 是 SqlSessionDaoSupport 的子类,它可以在 Spring 中进行如下
的配置: 
 
 
 
 
5.2 SqlSessionTemplate 
 
SqlSessionTemplate 是 MyBatis-Spring 的核心。 这个类负责管理 MyBatis的 SqlSession,
调用 MyBatis的 SQL 方法, 翻译异常。 SqlSessionTemplate 是线程安全的, 可以被多个 DAO
所共享使用。 
 
当调用 SQL 方法时, 包含从映射器 getMapper()方法返回的方法, SqlSessionTemplate
将会保证的 SqlSession 使用是和当前 Spring 的事务相关的。此外,它管理 session 的生命
周期,包含必要的关闭,提交或回滚操作。 
 
SqlSessionTemplate 实现了 SqlSession,这就是说要对 MyBatis 进行简易替换,通常
SqlSession. SqlSessionTemplate 是被用来替代 SqlSession 的,因为 MyBatis 基本的
public class UserMapperDaoImpl extends SqlSessionDaoSupport implements UserMapper { 
public User getUser(String userId) { 
return (User) getSqlSession() 
.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId); 


<bean id="userMapper" class="org.mybatis.spring.sample.mapper.UserMapperImpl"> 
<property name="sqlSessionFactory" ref="sqlSessionFactory" /> 
</bean> 
SqlSession 不能参与到 Spring 的事务中而且是线程不安全的。相同应用程序中两个类之间
的转换可能会引起数据一致性的问题。 
 
并不需要直接创建或使用 SqlSessionTemplate。很多情况下,MapperFactoryBean 内
部使用一个模板,那就是所有需要的。当需要访问一个 SqlSessionTemplate 时,它可以使
用 SqlSessionFactory 作为构造方法的参数来创建。 
 
 
相似地,模板可以在 Spring 的 XML 文件中配置。 
 
SqlSessionTemplate 有一个使用 ExecutorType 作为参数的构造方法。这允许你用来
创建对象,比如,一个批量 SqlSession,但是使用了下列 Spring 配置的 XML 文件: 
 
 
 
 
 
 
现在你所有的语句可以批量操作了,下面的语句就可以在 DAO 中使用了。 
 
 
 
 
 
 
 
 
注意如果所需的执行方法和默认的 SqlSessionFactory 设置不同,这种配置风格仅能
使用。对这种形式需要说明的是当这个方法被调用时,不能有一个存在使用不同
ExecutorType 运 行 的 事 务 。 也 要 保证 在 不 同 的事 务 中 , 使用 不 同 执 行器 来 调 用
SqlSessionTemplate 时,不如 PROPAGATION_REQUIRES_NEW 或完全在一个事务外
面。 
 
 
SqlSessionTemplate sessionTemplate = new SqlSessionTemplate(sqlSessionFactory); 
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 
<constructor-arg index="0" ref="sqlSessionFactory" /> 
<constructor-arg index="1" value="BATCH" /> 
</bean> 
public void insertUsers(User[] users) { 
SqlSession sqlSession = getSqlSession(); 
for (User user : users) { 
sqlSession.insert("org.mybatis.spring.sample.mapper.UserMapper.insertUser", user); 


第六章 MapperFactoryBean 
 
为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象
(DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类
可以让你直接注入数据映射器接口到你的 service 层 bean 中。当使用映射器时,你仅仅如调
用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为
MyBatis-Spring 将会为你创建代理。 
 
使用注入的映射器代码,在 MyBatis,Spring 或 MyBatis-Spring 上面不会有直接的依赖。
MapperFactoryBean 创建的代理控制开放和关闭 session, 翻译任意的 DataAccessException
异常到 Spring 的异常中。此外,如果需要或参与到一个已经存在活动事务中,代理将会开
启一个新的 Spring 事务。 
6.1 创建 
 
数据映射器接口可以按照如下做法加入到 Spring 中: 
 
 
 
 
 
 
MapperFactoryBean 创建的代理类实现了 UserMapper 接口,并且注入到应用程序中。
因为代理创建在运行时环境中(Runtime,译者注) ,那么指定的映射器必须是一个接口,而
不是一个实现类。 
 
如果 UserMapper 有一个对应的 MyBatis 的 XML 映射器文件, 如果 XML 文件在类路径的
位置和映射器类相同时, 它会被 MapperFactoryBean 自动解析。 没有必要在 MyBatis 配置文
件 中 去 指 定 映 射 器 , 除 非 映 射 器 的 XML 文 件 在 不 同 的 类 路 径 下 。 可 以 参 考
SqlSessionFactoryBean 的 configLocation 属性(第三章)来获取更多信息。 
 
注意,当 MapperFactoryBean 需要 SqlSessionFactory 或 SqlSessionTemplate 时。
这些可以通过各自的 SqlSessionFactory 或 SqlSessionTemplate 属性来设置, 或者可以由
Spring 来自动装配。如果两个属性都设置了,那么 SqlSessionFactory 就会被忽略,因为
SqlSessionTemplate 是需要有一个 session工厂的设置; 那个工厂会由 MapperFactoryBean.
来使用。 
6.2 注入映射器 
 
你可以在 business/service 对象中直接注入映射器,和注入 Spring 的 bean 是一样的: 
 
 
 
 
 
这个 bean 可以直接用在应用程序的逻辑中: 
 
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
<property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" /> 
<property name="sqlSessionFactory" ref="sqlSessionFactory" /> 
</bean> 
<bean id="fooService" class="org.mybatis.spring.sample.mapper.FooServiceImpl"> 
<property name="userMapper" ref="userMapper" /> 
</bean> 
 
 
 
 
 
 
 
 
 
注意,在这段代码中没有 SqlSession 或 MyBatis 的引用。也不需要去创建,打开或关
闭 session。如果使用了 Spring 的事务,那么当事务完成或由于错误回滚时,session 也会被
提交。 
6.3 自动配置 
 
没有必要在 Spring 的 XML 配置文件中注册所有的映射器。相反,你可以使用一个
MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 动将 它 们 创 建 成
MapperFactoryBeans。 
 
要创建 MapperScannerConfigurer,可以在 Spring 的配置中添加如下代码: 
 
 
 
 
 
basePackage 属性是让你为映射器接口文件设置基本的包路径。 你可以使用分号或逗号
作为分隔符设置多于一个的包路径。每个映射器将会在指定的包路径中递归地被搜索到。 
 
注 意 , 没 有 必 要 去 指 定
SqlSessionFactory 或
SqlSessionTemplate , 因 为
MapperScannerConfigurer 将会创建 MapperFactoryBean,之后自动装配。但是,如果你使
用了一个以上的 DataSource(因此,也是多个的 SqlSessionFactory),那么自动装配可能会
失 效 。 这 种 情 况 下 , 你 可 以 使 用
sqlSessionFactoryBeanName

sqlSessionTemplateBeanName 属性来设置正确的工厂/模板。 
 
MapperScannerConfigurer 支 持 过 滤 由 指 定 的 创 建 接 口 或 注 解 创建 映 射 器 。
annotationClass 属性指定了要寻找的注解名称。 markerInterface 属性指定了要寻找的父
接口。如果两者都被指定了,加入到接口中的映射器会匹配两种标准。默认情况下,这两个
属性都是 null,所以在基包中给定的所有接口可以作为映射器加载。 
 
被发现的映射器将会使用 Spring 对自动侦测组件(参考 Spring 手册的 3.14.4)默认的命
名策略来命名。也就是说,如果没有发现注解,它就会使用映射器的非大写的非完全限定类
名。但是如果发现了@Component 或 JSR-330 @Named 注解,它会获取名称。注意你可以配

annotationClass

org.springframework.stereotype.Component

javax.inject.Named(如果你使用 JSE 6)或你自己的注解(肯定是自我注解)中,这样注
解将会用作生成器和名称提供器。 
 
 
public class FooService { 
private UserMapper userMapper; 
... 
public User doSomeBusinessStuff(String userId) { 
return this.userMapper.getUser(userId); 


<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
<property name="basePackage" value="org.mybatis.spring.sample.mapper" /> 
</bean> 
第七章 使用 MyBatis API 
 
使用 MyBatis-Spring,你可以继续直接使用 MyBatis 的 API。仅仅在 Spring 中使用
SqlSessionFactoryBean 来创建一个 SqlSessionFactory, 之后在你的代码中使用这个工厂。
这种情况下你就不需要在代码中编写任何 MyBatis-Spring 的依赖了; 仅在 DAO 中使用注入的
SqlSessionFactory 就行了。 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
注意这种用法不会参与到任何 Spring 的事务中。更进一步来说,如果 SqlSession 使用
了 DataSource,它也被 Spring 的事务管理器使用了,还有当前过程中的事务,那么这段代
码就会抛出异常。出于这个原因,如果你必须使用这种样式的代码,你就不应该使用 Spring
的事务数据库连接。 
 
 
public class UserMapperSqlSessionImpl implements UserMapper { 
// SqlSessionFactory会通常由SqlSessionDaoSupport来设置 
private SqlSessionFactory sqlSessionFactory; 
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { 
this.sqlSessionFactory = sqlSessionFactory; 

public User getUser(String userId) { 
// 注意标准的MyBatis API用法 – 手动打开和关闭session 
SqlSession session = sqlSessionFactory.openSession(); 
try { 
return (User) 
session.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", 
userId); 
} finally { 
session.close(); 



第八章 示例代码 
 
你可以从 Google Code 的 MyBatis 资源库中检出示例代码。 
 
Java 代码 
 
配置文件 
任何示例都可以使用 JUnit 4 来运行。 
 
这个示例代码展示了一个典型的事务服务层从数据访问层获取领域对象的设计。 
 
这个 service 由 FooService.java 和 FooServiceImpl.java 实现类组成。这个 Service
是事务性的, 所以当任何方法被调用和提交并没有以抛出非检查的异常而结束时, 事务都会
启动。 
 
 
 
 
 
 
要注意, 事务特性是由@Transactional 属性配置的。 这不是必须的; 任何其它由 Spring
提供的方法都可以用来标定你的事务。 
 
这个 service 使用 MyBatis 调用了一个数据访问层。这层由 MyBatis 的映射器接口
UserMapper.java 和可选的实现 UserMapperImpl.java 组成。 
 
在所有的示例代码中, 映射器都被注入到 service bean 中, 所以 service 代码可以如下编
写: 
 
 
 
 
 
 
 
 
 
 
 
在这个手册中, 数据库访问层已经实现了使用不同技术来实现。 SampleBasicTest 会展
示给你推荐的和最基于 MapperFactoryBean 最简单的配置。SampleAutoTest 展示了一个基
于组件扫描和自动装配的最小 XML 配置。SampleSqlSessionTest 将会给你展示如何使用
Spring 管理的 SqlSession.来手工编写一个 DAO。最后 SampleBatchTest 将会给你展示如何
使用批量操作的 SqlSession。可以在实践中来看看这些不同的 applicationContext.xml
文件来使用 MyBatis-Spring。 
@Transactional 
public interface FooService { 
User doSomeBusinessStuff(String userId); 

public class FooServiceImpl implements FooService { 
private UserMapper userMapper; 
public void setUserMapper(UserMapper userMapper) { 
this.userMapper = userMapper; 

public User doSomeBusinessStuff(String userId) { 
return this.userMapper.getUser(userId); 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 事业单位辞职请示30天不批怎么办 孕早期吃了油菜怎么办 实体店买到翻新苹果手机怎么办 太阳花叶子蔫了怎么办 刚摘下来的多肉怎么办 购车4s不给合同怎么办 橙光游戏2.0商城怎么办 飞羽花卷叶了怎么办 孔雀竹芋叶子发黄卷曲怎么办 孔雀竹芋叶子黄了卷了怎么办 飞羽竹芋叶尖黄怎么办 十七岁还是胸小怎么办 英雄联盟连接不上服务器怎么办 彩叶草叶子蔫了怎么办 家里种葱老是死怎么办 非洲菊生虫子了怎么办 多肉的花剪下来怎么办 结石痛怎么办怎么止疼 喝玫瑰花茶胃疼怎么办 卡地亚戒指掉色怎么办 苹果8plus掉电快怎么办 苹果8plus耗电快怎么办 卡地亚戒指划痕怎么办 苹果手机玫瑰金掉色怎么办 14k玫瑰金掉色怎么办 卡地亚手镯掉色怎么办 手机掉油漆里了怎么办 黄金戴久了变黑怎么办 玫瑰金褪色不亮了怎么办 黄金带久了不亮怎么办 玉石带久了不亮怎么办 手表带久了不亮怎么办 蜜蜡带久了不亮怎么办 钛钢首饰不亮了怎么办 潘多拉玫瑰金戒指褪色了怎么办 金色手表漆掉了怎么办 玫瑰金表带褪色后怎么办 K金褪色或泛黄怎么办 钛钢玫瑰金变黑怎么办 玫瑰金手镯掉色了怎么办 彩金颜色不亮了怎么办