教你在SpringBoot项目中优雅的使用 Mybatis

2020-05-28 00:00:00 专区 订阅 注解 方式 添加

由于项目中使用mybatis比较多,并且mybatis这种半orm形式的持久层框简单又不失可控性,所以这一章简单讲一下springboot与mybatis的集成。

mybatis-spring-boot-starter

官方说明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot Springboot整合mybatis主要有两种方案,一种是使用注解解决,另一种是简化后的传统方式。当然两种方式首先都得添加pom依赖,这是必不可少的,下面正式进入

  1. <dependency>

  2. <groupId>org.mybatis.spring.boot</groupId>

  3. <artifactId>mybatis-spring-boot-starter</artifactId>

  4. <version>1.1.1</version>

  5. </dependency>

无配置文件注解

即所有问题都通过注解解决,这也是我喜欢的方式

1、添加POM文件

  1. <!-- mybatis相关-->

  2. <dependency>

  3. <groupId>org.mybatis.spring.boot</groupId>

  4. <artifactId>mybatis-spring-boot-starter</artifactId>

  5. <version>1.1.1</version>

  6. </dependency>

2、APPLICATION.PROPERTIES 添加相关配置

  1. mybatis.mapperLocations=classpath*:/mapper/*.xml

在启动类中添加对mapper包扫描@MapperScan。

  1. @MapperScan(basePackages = {"com.liangliang.lessons.mapper"})

  2. @SpringBootApplication

  3. public class LessonsApplication {


  4. public static void main(String[] args) {

  5. SpringApplication.run(LessonsApplication.class, args);

  6. }

  7. }

3、开发MAPPER

  1. @Mapper

  2. public interface UserMapper {

  3. List<UserEntity> getAll();


  4. UserEntity getOne(Long id);


  5. void insert(UserEntity user);


  6. void update(UserEntity user);


  7. void delete(Long id);

  8. }

为了更接近生产我特地将usersex、nickname两个属性在数据库加了下划线和实体类属性名不一致,另外user_sex使用了枚举。

4、使用

上面三步就基本完成了相关dao层开发,使用的时候当作普通的类注入进入就可以了。

  1. @RunWith(SpringJUnit4ClassRunner.class)

  2. @SpringBootTest

  3. public class UserMapperTest {

  4. @Autowired

  5. UserMapper userMapper;

  6. @Test

  7. public void getAll() throws Exception {

  8. System.out.println("----------userMapper:"+userMapper);

  9. userMapper.getOne(1l);

  10. }


  11. @Test

  12. public void getOne() throws Exception {

  13. }


  14. @Test

  15. public void insert() throws Exception {

  16. }


  17. @Test

  18. public void update() throws Exception {

  19. }


  20. @Test

  21. public void delete() throws Exception {

  22. }


  23. }

到此,单元测试完成,controller中写法在代码中有详细的注解,直接使用即可,对于另一种在mapper中写sql注解的方式,这里不做说明,这种做法对代码侵入性太高,不建议使用,网上也有相应教程,感兴趣的小伙伴可以自行写。同样代码地址在 https://github.com/liangliang1259/daily-lessons.git 中的项目lessons-4



相关文章