SpringBoot 集成 Mybatis

0 条评论

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

}

参考:

相关日志 Relate Posts

收藏与分享 : Twitter | Facebook | 微博 | 人人 | Google+ | PDF

发表留言(Ctrl+Enter提交)