0


Spring Boot整合MyBatis Plus实现基本CRUD与高级功能

文章目录

在这里插入图片描述

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


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

1. 引言

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

2. 项目搭建与依赖配置

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

2.1 添加MyBatis Plus依赖

pom.xml

文件中添加以下依赖:

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

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=UTCusername: your_username
    password: your_password

mybatis-plus:mapper-locations: classpath:mapper/**/*.xmlglobal-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

表:

importcom.baomidou.mybatisplus.annotation.*;importlombok.Data;importjava.util.Date;@Data@TableName("user")publicclassUser{@TableId(type =IdType.AUTO)privateLong id;privateString username;privateString password;privateInteger age;@TableField(fill =FieldFill.INSERT)privateDate createTime;@TableField(fill =FieldFill.INSERT_UPDATE)privateDate updateTime;@TableLogicprivateInteger deleted;}

在上述实体类中,使用了

@TableName

注解指定了对应的数据库表名,

@TableId

表示主键,

@TableField

用于自动填充,

@TableLogic

表示逻辑删除字段。

3.2 创建Mapper接口

importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importorg.apache.ibatis.annotations.Mapper;@MapperpublicinterfaceUserMapperextendsBaseMapper<User>{}

MyBatis Plus提供了

BaseMapper

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

3.3 实现Service层

importcom.baomidou.mybatisplus.extension.service.IService;publicinterfaceUserServiceextendsIService<User>{}

创建一个

UserService

接口,继承自

IService

,该接口提供了常用的Service层方法。

importcom.baomidou.mybatisplus.extension.service.impl.ServiceImpl;importorg.springframework.stereotype.Service;@ServicepublicclassUserServiceImplextendsServiceImpl<UserMapper,User>implementsUserService{}

创建

UserServiceImpl

类,实现

UserService

接口,并继承自

ServiceImpl

,实现了其中的方法。

3.4 控制器实现

importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.*;importjava.util.List;@RestController@RequestMapping("/user")publicclassUserController{@AutowiredprivateUserService userService;@GetMapping("/{id}")publicUsergetUser(@PathVariableLong id){return userService.getById(id);}@GetMapping("/list")publicList<User>listUsers(){return userService.list();}@PostMappingpublicvoidaddUser(@RequestBodyUser user){
        userService.save(user);}@PutMappingpublicvoidupdateUser(@RequestBodyUser user){
        userService.updateById(user);}@DeleteMapping("/{id}")publicvoiddeleteUser(@PathVariableLong id){
        userService.removeById(id);}}

以上代码中,通过注入

UserService

实现了基本的CRUD操作的接口。

4. 高级功能实现

4.1 自动填充功能

MyBatis Plus提供了自动填充功能,通过

@TableField

注解的

fill

属性来指定填充的时机,常用的值有

FieldFill.INSERT

FieldFill.INSERT_UPDATE

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

上述代码中,

createTime

字段在插入时自动填充,

updateTime

字段在插入和更新时自动填充。

4.2 乐观锁功能

MyBatis Plus支持乐观锁的实现,通过

@Version

注解在实体类的版本字段上添加乐观锁。

@VersionprivateInteger version;

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

4.3 逻辑删除功能

MyBatis Plus提供了逻辑删除的功能,通过

@TableLogic

注解在实体类的逻辑删除字段上添加逻辑删除标记。

@TableLogicprivateInteger deleted;

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

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

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

5.1 条件构造器

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

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

5.2 分页查询

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

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

5.3 性能分析

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

# application.ymlmybatis-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外卖订购系统
  • 【数据结构学习】从零起步:学习数据结构的完整路径

在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_43546721/article/details/136047610
版权归原作者 IT·陈寒 所有, 如有侵权,请联系我们删除。

“Spring Boot整合MyBatis Plus实现基本CRUD与高级功能”的评论:

还没有评论