news 2026/5/23 15:03:08

Mybatis-Plus

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mybatis-Plus

Mybatis-plus

基于mybatis框架上的加强版,拥有mybatis的所有优点,同时也加了一些属于自己的优点,加入mybatis-plus不会对之前存在的mybatis产生冲突

官网

https://baomidou.com/introduce/

所有详细的内容可访问这个网站

使用mybatis-plus

  1. 导入依赖

这里需要根据自己的spring框架的版本,自行去导入相应的依赖即可

  1. 配置yml文件

第一个是这个项目的名字,第二个是JDBC的连接,需要指明使用哪个库然后把账号密码一并写入,第三个是mybatis-plus的打印日志

  1. 代码实现

  1. 先创建实体类

  1. 写mapper接口

这个接口需要继承mybatis-plus的BaseMapper接口,由于是继承,basemapper里面实现了基本的CRUD,所以我们自己写的接口就可以直接调用父类的方法

这个basemapper接口是泛型类的,里面实现了基础的CRUD功能

  1. 测试用例

首先实例化一个对象,然后甚至对应的属性即可

删除基类也有很多个方法,只需要按照对应的使用即可

按照自己的需求去调用即可

  1. 为什么这个mybatis-plus知道我们要操作哪个表

这个和我们的命名规范有关,当我们命名规范的时候,这个框架会进行简单的隐式转化(驼峰自动转换)

类名:UserInfo

数据库名:user_info

当我们创建了对应的实体类以及里面对应的属性的时候,mybatis-plus会进行驼峰自动转换,只要我们的语法规范,那么他就可以自动识别,如果不规范的情况就会出现转换不超过,报无法找到对应的错误

错误1:

类名不规范

解决方法

使用注解@TableName

指定表名就可以让他找到对应的问题

错误2:属性名不规范

和表名不规范一样,都会报错,这个报错的是bad sql表示语法错误

自增主键

使用注解@TableId

如果主键就是id就不需要加这个注解,如果主键不是id,就需要加注解@Tableid指定主键

指定主键的名字(如果就叫id就不需要指定),还有自动递增(在mybatis-plus中,由这个框架自动生成的,所以自增的主键会很大)

条件构造器

官方:https://baomidou.com/guides/wrapper/

构造器:mybatis-plus框架为我们提供的,用于构造更复杂的数据库查询条件的。

常见的几个:

Mybatis写法

Plus构造器写法

创建一个wrapper,然后把你想要的语句进行拼接即可,wrapper支持链式拼接,select表示选择,eq表示等于,like表示and

更新

创建一个wrapper,然后使用链式拼接,lt表示less than,小于的意思,上面这个wrapper表示age<20,后续这个创建一个类是为了前面的deleteflag的值,最后调用

第二种写法

不创建实体对象直接设置更新的字段和条件

这里使用的是updateWrapper,只有这个才不用创建新的对象,这个可以直接使用set表示你要修改的字段名,in表示的在范围之内

更新sql计算式

这里需要使用setsql这个来写即可,把需要写的写进去即可

删除

依旧创建一个wrapper然后开始拼接需要的条件

总结

可以使用构造器进行拼接你所需要的sql语句,使用的时候只需要遵守规则即可,都是先创建一个对象,然后开始链式拼接调用

注意点:

如果有字段使用了@TableFiled起了别名,当去数据库查询的时候,会自动映射到对应驼峰转换的属性上,不会赋值到别名的位置,会导致出现赋值为空的情况

LambdaQueryWrapper && LambdaUpdateWrapper

LambdaQueryWrapper和LambdaUpdateWrapper存在就是为了解决上述两个存在的问题,字段名被写死了,后续如果发生变更就会很难发现

LambdaQueryWrapper

Select username,password,age from user_info where gender =1;

依旧创建一个wrapper对象,然后使用这个对象调用lambda表达式,后续的拼接逻辑是一样的

LambdaUpdateWrapper

Update user_info set delete_flag =1,age=5 where id in(1,2,3)

依旧创建一个对象,然后需要使用lambda表达式,然后按照需求进行拼接即可

自定义SQL

硬性要求:mybatis-plus版本不低于3.0.7

Mapper层

${ew.customSqlSegment}:

可以理解为一个动态的占位符,在写sql语句传参的时候,就必须使用${ew.customSqlSegment}来接收wrapper对象的sql片段

@Param(Constants.WRAPPER) QueryWrapper<UserInfo> wrapper

这个进行的是参数绑定,把传入的wrapper对象绑定到默认的ew(默认的参数名)

测试

这里负责写你的sql语句,后续只需要拼接,有修改也只是需要修改这里就行

这样做的意义就是为了解耦和,解决之前出现的写死的情况

Xml实现

先配置xml的路径

接着先写mapper

写测试用例

总结

使用自定义SQL主要是为了提供自己实现sql语句,让你按照自己的需求进行设计sql语句

注意点;

在sql语句中,${ew.customSqlSegment}作为动态占位符,负责拼接

使用@Param(Constants.WRAPPER)来接收传输的wrapper对象,进行参数绑定默认到ew中

后续只需要传wrapper对象即可

Mybatis-plus

一个基于mybatis升级的框架,提升我们的开发效率,拥有mybatis的所有优势

使用自定义sql需要注意版本问题

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 16:42:59

1台高性能云图形工作站如何共享给6位SolidWorks设计师同时并发

在制造业数字化转型浪潮中&#xff0c;SolidWorks等三维设计软件的高效协作成为企业提升研发效率的关键。要将1台高性能云图形工作站通过云飞云共享云桌面共享给6位SolidWorks设计师同时并发使用&#xff0c;需从硬件配置、资源管理、软件部署、网络优化、安全管控五个方面进行…

作者头像 李华
网站建设 2026/5/8 7:01:56

2026年顶级内容创作指南:AI时代下,8项不可替代的核心技能

在AI工具普及的2026年&#xff0c;“优秀”的内容创作早已不再是简单的文字堆砌。当ChatGPT、Claude等工具能快速生成文章时&#xff0c;真正的顶尖创作者凭借独特的人类视角与专业能力脱颖而出。内容创作的本质&#xff0c;是用文字与心理学结合&#xff0c;为读者传递价值、建…

作者头像 李华
网站建设 2026/5/22 21:02:38

阿里通义Z-Image-Turbo WebUI与团队协作:如何共享和复用AI生成的结果

阿里通义Z-Image-Turbo WebUI与团队协作&#xff1a;如何共享和复用AI生成的结果 在当今的设计工作中&#xff0c;AI图像生成已经成为提升效率的重要工具。阿里通义Z-Image-Turbo WebUI作为一款强大的AI图像生成工具&#xff0c;能够帮助设计团队快速产出高质量的视觉素材。然…

作者头像 李华
网站建设 2026/5/12 23:30:17

低成本创业方案:用云端GPU+Z-Image-Turbo搭建AI头像生成服务

低成本创业方案&#xff1a;用云端GPUZ-Image-Turbo搭建AI头像生成服务 对于应届毕业生或初创团队来说&#xff0c;开发一个AI头像生成小程序是个不错的创业方向&#xff0c;但高昂的硬件成本和复杂的云服务计费模式往往让人望而却步。本文将介绍如何利用Z-Image-Turbo镜像在云…

作者头像 李华