Spring Boot:与 MyBatis 协同工作

主要观点:MyBatis 是支持自定义 SQL、存储过程和高级映射的 SQL 映射框架,SpringBoot 未提供官方 MyBatis 集成支持,但 MyBatis 社区为其构建了 SpringBoot 启动器。可通过添加 MyBatis Starter 依赖来集成,还可使用注解或 Mapper XML 配置 SQL 映射,且 SpringBoot MyBatis 启动器提供了自定义 MyBatis 设置的配置参数,需配置相关属性并使用注解指定 Mapper 接口位置,最后可创建 JUnit 测试类测试 UserMapper 方法。
关键信息

  • 添加 MyBatis Starter 依赖的代码:<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.0.0</version></dependency>
  • UserMapper 接口的定义及方法:public interface UserMapper { void insertUser(User user); User findUserById(Integer id); List<User> findAllUsers(); }
  • UserMapper.xml 文件的内容及配置要点:如 namespace 与 Mapper 接口 FQN 相同、statement id 与接口方法名相同等
  • 使用注解配置的 UserMapper 接口:public interface UserMapper { @Insert("insert into users(name,email) values(#{name},#{email})") @SelectKey(statement="call identity()", keyProperty="id", before=false, resultType=Integer.class) void insertUser(User user); @Select("select id, name, email from users WHERE id=#{id}") User findUserById(Integer id); @Select("select id, name, email from users") List<User> findAllUsers(); }
  • 配置 MyBatis 相关参数:mybatis.config = mybatis config file name
  • 配置 application.properties:mybatis.typeAliasesPackage=com.sivalabs.demo.domain
  • 入口点类的定义及注解:@SpringBootApplication @MapperScan("com.sivalabs.demo.mappers") public class SpringbootMyBatisDemoApplication { }
  • JUnit 测试类的代码及测试方法:测试 UserMapper 的各种方法
    重要细节
  • 可在http://blog.mybatis.org/2015/11/mybatis-spring-boot-released.html查看 SpringBoot MyBatis Starter 发布公告,在https://github.com/mybatis/mybatis-spring-boot查看源代码。
  • 可在http://blog.mybatis.org/p/products.htmlhttp://www.mybatis.org/spring/了解更多 MyBatis 和 Spring 集成的信息。
阅读 7
0 条评论