Spring Boot(11):【详解】Spring Boot + Mybatis-Plus实现CRUD,轻松玩转接口操作!

2023-09-12 09:09:51 浏览数 (1)

代码语言:javascript复制
环境说明:Windows10   Idea2021.3.2   Jdk1.8   SpringBoot 2.3.1.RELEASE

1. 前言

随着Java技术和开源社区的不断发展,现在已经有大量优秀的开源框架和工具可供我们使用。为了快速开发高质量的应用程序,选择合适的框架和工具是非常重要的。其中,Spring Boot是目前非常受欢迎的框架之一,它可以帮助我们快速构建和部署Spring应用程序。而Mybatis-Plus则是在Mybatis基础之上进行了增强和扩展,提供了更加简便的CRUD操作和更加优秀的性能表现。本文将介绍如何在Spring Boot框架中整合Mybatis-Plus,并实现接口的增删改查功能。

2. 摘要

本文主要介绍了在Spring Boot框架中整合Mybatis-Plus的方法和步骤,包括如何配置数据库连接和Mybatis-Plus插件,以及如何编写Mapper接口和Service层,完成对数据库中数据的增删改查操作。同时,本文还介绍了如何编写测试用例,确保代码的正确性。最后,本文对整个过程进行了总结,并针对可能遇到的问题给出了解决方案。

3. 正文

3.1添加依赖

代码语言:javascript复制
    <!--mybatis-plus-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.2.0</version>
    </dependency>

示例截图如下:

3.2 配置数据库连接

在Spring Boot框架中,我们需要在application.properties或者application.yml文件中配置数据库连接信息。例如:

代码语言:javascript复制
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus_demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root

mybatis-plus.mapper-locations=classpath:mapper/*.xml
mybatis-plus.type-aliases-package=com.example.demo.entity
mybatis-plus.configuration.cache-enabled=false

或者你也可以按照yaml语法配置。

其中,spring.datasource开头的属性用于配置数据库连接,mybatis-plus开头的属性用于配置Mybatis-Plus插件。在这里,我们需要注意以下几点:

  • 配置文件中的url、driver-class-name、username和password属性分别对应着数据库连接的URL、驱动类名、用户名和密码。连接URL中包含了数据库名称mybatis_plus_demo,这是我们在MySQL中预先创建好的数据库名称。
  • mapper-locations属性用于配置Mapper XML文件的位置,由于我们采用的是Spring Boot的默认目录结构,因此可以将Mapper XML文件放置在resources/mapper目录下。
  • type-aliases-package属性用于配置Mybatis-Plus中实体类的包名,这里我们将其设置为com.example.demo.entity。
  • configuration.cache-enabled属性用于控制Mybatis-Plus在缓存中缓存SQL的执行结果,建议在开发阶段将其禁用。

3.3 配置Mybatis-Plus插件

在配置好数据库连接和Mybatis-Plus插件之后,我们还需要定义一个Mybatis-Plus相关的配置类,用于注入拦截器和分页插件。例如:

代码语言:javascript复制
@Configuration
public class MybatisPlusConfig {

    /**
     * Mybatis-Plus SQL执行效率插件【生产环境可以关闭】
     */
    @Bean
    public PerformanceInterceptor performanceInterceptor() {
        return new PerformanceInterceptor();
    }

    /**
     * Mybatis-Plus分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

}

在这里,我们定义了两个Bean,分别是PerformanceInterceptor和PaginationInterceptor。PerformanceInterceptor是Mybatis-Plus提供的SQL执行效率插件,用于记录SQL执行时间等信息,建议只在开发阶段使用。而PaginationInterceptor则是Mybatis-Plus提供的分页插件,在进行分页查询操作时非常实用。

3.4 编写Mapper接口

在Mybatis-Plus中,我们可以通过继承BaseMapper接口来快速创建Mapper接口,无需手动编写增删改查的SQL语句。例如:

代码语言:javascript复制
@Repository
public interface UserMapper extends BaseMapper<User> {

}

在这里,我们定义了一个UserMapper接口,通过继承BaseMapper<User>接口,我们可以直接调用其中定义好的CRUD操作方法,例如insert、updateById、deleteById、selectById等方法。其中,User是我们定义的实体类。

3.5 编写Service层

在Service层中,我们需要注入Mapper接口,并编写具体的业务逻辑代码。例如:

代码语言:javascript复制
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public boolean save(User user) {
        return userMapper.insert(user) > 0;
    }

    @Override
    public boolean update(User user) {
        return userMapper.updateById(user) > 0;
    }

    @Override
    public boolean delete(Long id) {
        return userMapper.deleteById(id) > 0;
    }

    @Override
    public User getById(Long id) {
        return userMapper.selectById(id);
    }

    @Override
    public List<User> list() {
        return userMapper.selectList(null);
    }

}

在这里,我们定义了一个UserServiceImpl类,实现了UserService接口。在不同的业务方法中,我们可以直接调用Mapper接口中定义的CRUD操作方法,完成对数据库中数据的增删改查操作。

3.6 编写测试用例

在编写完Mapper接口和Service层的代码之后,我们需要编写一些简单的测试用例来验证其正确性。例如:

代码语言:javascript复制
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisPlusDemoApplicationTests {

    @Autowired
    private UserService userService;

    @Test
    public void save() {
        User user = new User();
        user.setName("John");
        user.setAge(20);
        Assert.assertTrue(userService.save(user));
    }

    @Test
    public void update() {
        User user = userService.getById(1L);
        user.setAge(21);
        Assert.assertTrue(userService.update(user));
    }

    @Test
    public void delete() {
        Assert.assertTrue(userService.delete(1L));
    }

    @Test
    public void getById() {
        User user = userService.getById(1L);
        Assert.assertNotNull(user);
    }

    @Test
    public void list() {
        List<User> userList = userService.list();
        Assert.assertNotNull(userList);
    }

}

在这里,我们定义了一个MybatisPlusDemoApplicationTests测试类,通过注入UserService接口,调用其中定义的业务方法,完成对数据库中数据的增删改查操作。在每个测试方法中,我们使用JUnit提供的Assert类,判断方法的返回值是否正确。

4. 小结

本文主要介绍了在Spring Boot框架中整合Mybatis-Plus的方法和步骤,包括如何配置数据库连接和Mybatis-Plus插件,以及如何编写Mapper接口和Service层,完成对数据库中数据的增删改查操作。同时,本文还介绍了如何编写测试用例,确保代码的正确性。最后,我们对整个过程进行了总结,并针对可能遇到的问题给出了解决方案。

0 人点赞