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

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

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添加依赖

    <!--mybatis-plus-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.2.0</version>
    </dependency>

示例截图如下:
image.png

3.2 配置数据库连接

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

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语法配置。
image.png

其中,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相关的配置类,用于注入拦截器和分页插件。例如:

@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语句。例如:

@Repository
public interface UserMapper extends BaseMapper<User> {

}

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

3.5 编写Service层

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

@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层的代码之后,我们需要编写一些简单的测试用例来验证其正确性。例如:

@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层,完成对数据库中数据的增删改查操作。同时,本文还介绍了如何编写测试用例,确保代码的正确性。最后,我们对整个过程进行了总结,并针对可能遇到的问题给出了解决方案。

关于我

我是bug菌,CSDN | 阿里云 | 华为云 | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。