news 2026/2/21 9:08:37

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/2/19 21:38:06

浮标水质监测站:集成化水质数据采集

在需要长期、连续监测水质环境的各类水域&#xff0c;浮标式水质自动监测站提供了一种集成化的解决方案。它将数据采集、存储、传输与管理功能集于一体&#xff0c;构成一套完整的无人值守自动监测系统。该系统通常由水质传感器、数据采集仪、通信单元、供电系统、结构支架和水…

作者头像 李华
网站建设 2026/2/15 6:34:30

智能装备工厂研发部门如何选用设计云桌面实现降本增效

在制造业数字化转型浪潮中&#xff0c;智能装备工厂研发部门面临设计软件许可成本高、数据安全风险大、跨地域协作效率低等痛点。云飞云共享设计云桌面解决方案通过云端资源集中管理、高性能图形计算能力分配、数据全生命周期加密等技术创新&#xff0c;为装备研发提供了"…

作者头像 李华
网站建设 2026/2/15 6:34:28

Node.js用workerData传递数据

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Node.js Worker Threads 中的 workerData&#xff1a;高效数据传递的深度解析目录Node.js Worker Threads 中的 workerData&…

作者头像 李华
网站建设 2026/2/20 4:43:54

高性能计算:优化M2FP的内存使用效率

高性能计算&#xff1a;优化M2FP的内存使用效率 &#x1f4cc; 背景与挑战&#xff1a;多人人体解析中的资源瓶颈 在计算机视觉领域&#xff0c;多人人体解析&#xff08;Multi-person Human Parsing&#xff09; 是一项极具挑战性的任务。它要求模型不仅能够识别单个人体的细粒…

作者头像 李华
网站建设 2026/2/12 7:01:28

论文开题怎么写?计算机专业基于系统设计的技术路线与结构示例

这篇文章主要写给正在准备计算机专业毕业论文开题的本科生。如果你已经确定了大致选题&#xff0c;却不知道论文开题该如何下笔&#xff1b;或者写完之后发现技术路线模糊、结构不清&#xff0c;被导师反复要求修改&#xff0c;那么这篇文章正是为你准备的。本文将围绕论文开题…

作者头像 李华