相关推荐recommended
Spring Boot整合MyBatis Plus实现基本CRUD与高级功能
作者:mmseoamin日期:2024-02-18

文章目录

    • 1. 引言
    • 2. 项目搭建与依赖配置
      • 2.1 添加MyBatis Plus依赖
      • 2.2 配置数据源与MyBatis Plus
      • 3. 实现基本CRUD功能
        • 3.1 创建实体类
        • 3.2 创建Mapper接口
        • 3.3 实现Service层
        • 3.4 控制器实现
        • 4. 高级功能实现
          • 4.1 自动填充功能
          • 4.2 乐观锁功能
          • 4.3 逻辑删除功能
          • 5. 拓展:MyBatis Plus的其他功能
            • 5.1 条件构造器
            • 5.2 分页查询
            • 5.3 性能分析
            • 6. 总结

              Spring Boot整合MyBatis Plus实现基本CRUD与高级功能,在这里插入图片描述,第1张

              🎉欢迎来到SpringBoot框架学习专栏~


              • ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
              • ✨博客主页:IT·陈寒的博客
              • 🎈该系列文章专栏:SpringBoot
              • 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习
              • 🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
              • 📜 欢迎大家关注! ❤️

              1. 引言

              Spring Boot是一款用于快速构建Spring应用程序的框架,而MyBatis Plus是MyBatis的增强工具,提供了许多方便实用的功能,包括基本CRUD操作、自动填充、乐观锁、逻辑删除等。本文将详细介绍如何在Spring Boot项目中整合MyBatis Plus,并展示其基本CRUD功能以及高级功能的实现方式。

              Spring Boot整合MyBatis Plus实现基本CRUD与高级功能,在这里插入图片描述,第2张

              2. 项目搭建与依赖配置

              首先,确保你已经搭建好了Spring Boot项目。接下来,我们需要添加MyBatis Plus的依赖。

              2.1 添加MyBatis Plus依赖

              在pom.xml文件中添加以下依赖:

              
              
                  com.baomidou
                  mybatis-plus-boot-starter
                  3.4.3
              
              

              2.2 配置数据源与MyBatis Plus

              在application.properties或application.yml中配置数据库连接信息和MyBatis Plus的相关配置:

              spring:
                datasource:
                  driver-class-name: com.mysql.cj.jdbc.Driver
                  url: jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
                  username: your_username
                  password: your_password
              mybatis-plus:
                mapper-locations: classpath:mapper/**/*.xml
                global-config:
                  db-config:
                    id-type: auto
                configuration:
                  map-underscore-to-camel-case: true
              

              以上配置中,mapper-locations指定了MyBatis Plus的XML映射文件路径,map-underscore-to-camel-case表示数据库字段采用下划线命名,而Java实体类采用驼峰命名。

              3. 实现基本CRUD功能

              3.1 创建实体类

              假设我们有一个实体类User,对应数据库中的user表:

              import com.baomidou.mybatisplus.annotation.*;
              import lombok.Data;
              import java.util.Date;
              @Data
              @TableName("user")
              public class User {
                  @TableId(type = IdType.AUTO)
                  private Long id;
                  private String username;
                  private String password;
                  private Integer age;
                  @TableField(fill = FieldFill.INSERT)
                  private Date createTime;
                  @TableField(fill = FieldFill.INSERT_UPDATE)
                  private Date updateTime;
                  @TableLogic
                  private Integer deleted;
              }
              

              在上述实体类中,使用了@TableName注解指定了对应的数据库表名,@TableId表示主键,@TableField用于自动填充,@TableLogic表示逻辑删除字段。

              3.2 创建Mapper接口

              import com.baomidou.mybatisplus.core.mapper.BaseMapper;
              import org.apache.ibatis.annotations.Mapper;
              @Mapper
              public interface UserMapper extends BaseMapper {
              }
              

              MyBatis Plus提供了BaseMapper接口,通过继承该接口,即可获得常见的CRUD功能,无需手动编写SQL。

              3.3 实现Service层

              import com.baomidou.mybatisplus.extension.service.IService;
              public interface UserService extends IService {
              }
              

              创建一个UserService接口,继承自IService,该接口提供了常用的Service层方法。

              import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
              import org.springframework.stereotype.Service;
              @Service
              public class UserServiceImpl extends ServiceImpl implements UserService {
              }
              

              创建UserServiceImpl类,实现UserService接口,并继承自ServiceImpl,实现了其中的方法。

              3.4 控制器实现

              import org.springframework.beans.factory.annotation.Autowired;
              import org.springframework.web.bind.annotation.*;
              import java.util.List;
              @RestController
              @RequestMapping("/user")
              public class UserController {
                  @Autowired
                  private UserService userService;
                  @GetMapping("/{id}")
                  public User getUser(@PathVariable Long id) {
                      return userService.getById(id);
                  }
                  @GetMapping("/list")
                  public List listUsers() {
                      return userService.list();
                  }
                  @PostMapping
                  public void addUser(@RequestBody User user) {
                      userService.save(user);
                  }
                  @PutMapping
                  public void updateUser(@RequestBody User user) {
                      userService.updateById(user);
                  }
                  @DeleteMapping("/{id}")
                  public void deleteUser(@PathVariable Long id) {
                      userService.removeById(id);
                  }
              }
              

              以上代码中,通过注入UserService实现了基本的CRUD操作的接口。

              4. 高级功能实现

              4.1 自动填充功能

              MyBatis Plus提供了自动填充功能,通过@TableField注解的fill属性来指定填充的时机,常用的值有FieldFill.INSERT和FieldFill.INSERT_UPDATE。

              @TableField(fill = FieldFill.INSERT)
              private Date createTime;
              @TableField(fill = FieldFill.INSERT_UPDATE)
              private Date updateTime;
              

              上述代码中,createTime字段在插入时自动填充,updateTime字段在插入和更新时自动填充。

              4.2 乐观锁功能

              MyBatis Plus支持乐观锁的实现,通过@Version注解在实体类的版本字段上添加乐观锁。

              @Version
              private Integer version;
              

              在更新时,MyBatis Plus会自动检测版本字段,如果版本号不匹配,则更新失败。

              4.3 逻辑删除功能

              MyBatis Plus提供了逻辑删除的功能,通过@TableLogic注解在实体类的逻辑删除字段上添加逻辑删除标记。

              @TableLogic
              private Integer deleted;
              

              在进行逻辑删除操作时,MyBatis Plus会更新这个字段的值,而不是物理删除记录。

              5. 拓展:MyBatis Plus的其他功能

              除了上述介绍的功能外,MyBatis Plus还提供了许多其他强大的功能,如条件构造器、分页查询、性能分析、多租户支持等。以下简单介绍一些常用的功能:

              5.1 条件构造器

              MyBatis Plus的条件构造器可以轻松构建复杂的查询条件:

              LambdaQueryWrapper wrapper = Wrappers.lambdaQuery()
                  .eq(User::getUsername, "admin")
                  .like(User::getPassword, "pass");
              List userList = userService.list(wrapper);
              

              5.2 分页查询

              MyBatis Plus支持简单的分页查询:

              IPage page = new Page<>(1, 10);
              IPage userPage = userService.page(page, null);
              List userList = userPage.getRecords();
              

              5.3 性能分析

              MyBatis Plus提供了性能分析插件,可以方便地查看SQL执行情况:

              # application.yml
              mybatis-plus:
                configuration:
                  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
              

              通过配置log-impl属性,可以将SQL输出到控制台,方便调试与优化。

              6. 总结

              通过本文的介绍,我们学习了如何在Spring Boot项目中整合MyBatis Plus,并实现了基本的CRUD功能以及高级功能如自动填充、乐观锁、逻辑删除等。MyBatis Plus的强大功能极大地简化了数据库操作,提高了开发效率。在实际项目中,根据具体需求,我们可以更深入地了解MyBatis Plus提供的各种功能,以更好地应对复杂的业务场景。希望通过本文的学习,读者能够更加熟练地使用Spring Boot和MyBatis Plus进行项目开发。


              🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏

              📜您可能感兴趣的内容:

              • 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
              • 【Java学习路线】2023年完整版Java学习路线图
              • 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
              • 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
              • 【数据结构学习】从零起步:学习数据结构的完整路径

                Spring Boot整合MyBatis Plus实现基本CRUD与高级功能,在这里插入图片描述,第3张