跟着前面 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;
}
}
参考: