示例代码
提示 查看 JPetstore 6 demo 了解如何在完整的 Web 应用服务器上使用 Spring。
您可以在 MyBatis-Spring 的 代码仓库 中查看示例代码:
所有示例都能在 JUnit 5 下运行。
示例代码演示了事务服务从数据访问层获取域对象的典型设计。
FooService.java
作为服务:
@Transactional
public class FooService {
private final UserMapper userMapper;
public FooService(UserMapper userMapper) {
this.userMapper = userMapper;
}
public User doSomeBusinessStuff(String userId) {
return this.userMapper.getUser(userId);
}
}
它是一个事务 bean,所以当调用它的任何方法时,事务被启动,在方法结束且没有抛出任何未经检查的异常的时候事务将会被提交。注意,事务的行为可以通过 @Transactional
的属性进行配置。这不是必需的;你可以使用 Spring 提供的任何其他方式来划分你的事务范围。
此服务调用使用 MyBatis 构建的数据访问层.。该层只包含一个接口,UserMapper.java
,这将被 MyBatis 构建的动态代理使用,在运行时通过 Spring 注入到服务之中。
public interface UserMapper {
User getUser(String userId);
}
注意,为了简单起见,我们使用了接口 UserMapper.java
。在使用 DAO 的场景中,一个 DAO 类应该分为一个接口和一个实现类。回到这个例子里,准确来说,这个接口应该叫 UserDao.java
。
我们将看到不同的方法来发现映射器接口,将其注册到 Spring 并将其注入到服务 bean 中:
测试场景
样例测试 | 描述 |
---|---|
SampleMapperTest.java |
演示基于 MapperFactoryBean 的基本配置,这将动态构建 UserMapper 的一个实现。 |
SampleScannerTest.java |
演示如何使用 MapperScannerConfigurer 来自动发现项目中所有的映射器。 |
SampleSqlSessionTest.java |
演示如何基于 Spring 管理的 SqlSession 手动编写 DAO,并在 UserDaoImpl.java 中提供你自己的实现。 |
SampleEnableTest.java |
演示如何使用 Spring 的 @Configuration 和 @MapperScann 注解来自动发现 mappers. |
SampleNamespaceTest.java |
演示如何使用自定义 MyBatis XML 命名空间. |
SampleJavaConfigTest.java |
演示如何基于 Spring 的 @Configuration 来手工创建 MyBatis 的 bean。 |
SampleJobJavaConfigTest.java |
演示如何在 Java 配置中使用 Spring Batch 中的 ItemReader 和 ItemWriter 。 |
SampleJobXmlConfigTest.java |
演示如何在 XML 配置中使用 Spring Batch 中的 ItemReader 和 ItemWriter 。 |
查看不同的 applicationContext.xml
文件以了解 MyBatis-Spring 在实践中是如何运用的。