跟着前面 SpringBoot 集成 Flyway 自动创建数据库表 之后,在原有的项目上继续集成 Mybatis 做数据库的访问、对象映射。
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency>
这个依赖包主要引入了 mybatis-spring-boot-autoconfigure,利用了 spring boot 的 auto configure 机制,可以自动从 spring boot 里获取数据源,自动创建 SqlSessionFactory 等实例,所以有了它之后, mybatis 的什么 spring 配置都不用再管了。
这里使用注解的方式来使用 mybatis 的 mapper,由于没有 mybatis 配置文件了,就在 SprintBoot 应用的类上添加 @MapperScan 注解
@SpringBootApplication @MapperScan("org.isouth.task") public class TaskApp { public static void main(String[] args) { SpringApplication.run(TaskApp.class, args); } }
然后要求作为 Mybatis 的 Mapper 接口声明 @Mapper 注解:
@Mapper public interface UserMapper { @Select("SELECT * FROM USERS") List<User> listUsers(); @Select("SELECT * FROM USERS WHERE EMAIL=#{email}") User getUser(String email); @Insert("INSERT INTO USERS (EMAIL, ALIAS) VALUES(#{email},#{alias})") void addUser(User user); @Delete("DELETE FROM USERS WHERE EMAIL=#{email}") void deleteUser(String email); }
然后可以在 Controller 或者 Service 里直接使用 @Autowire 来装配 Mapper 接口,并直接调用接口方法使用了。
@Controller @RequestMapping("/users") public class UserController { @Autowired private UserMapper userMapper; @RequestMapping(method = RequestMethod.POST, path = "") @ResponseBody public User addUser(@RequestBody User user) { userMapper.addUser(user); return user; } }
参考: