转载

SpringBoot 集成 Mybatis

跟着前面 SpringBoot 集成 Flyway 自动创建数据库表 之后,在原有的项目上继续集成 Mybatis 做数据库的访问、对象映射。

1. 继续添加 mybatis 的 spring boot starter 包

<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 配置都不用再管了。

2. 添加 Mapper 扫描的注解

这里使用注解的方式来使用 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);
}

3. 直接装配引用 Mapper接口

然后可以在 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;
 }
}

参考:

  • mybatis-spring-boot-autoconfigure
原文  http://isouth.org/archives/359.html
正文到此结束
Loading...