news 2026/4/25 21:21:34

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/4/18 4:51:05

当当 item_get - 商品详情接口对接全攻略:从入门到精通

当当 item_get&#xff08;官方标准名称为 dangdang.item.get&#xff09;是通过商品 ID 或 ISBN 获取图书、百货等商品全量结构化数据的核心接口&#xff0c;覆盖标题、价格、库存、属性、多媒体、销售与售后等字段&#xff0c;适配商品展示、价格监控、竞品分析、库存管理等场…

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

企业级部署建议:负载均衡下的多个翻译镜像调度策略

企业级部署建议&#xff1a;负载均衡下的多个翻译镜像调度策略 &#x1f4cc; 背景与挑战&#xff1a;AI 智能中英翻译服务的规模化需求 随着全球化业务的不断扩展&#xff0c;企业对高质量、低延迟的中英智能翻译服务需求日益增长。传统的单实例部署模式在面对高并发请求时&am…

作者头像 李华
网站建设 2026/4/16 9:59:37

金竹飞瀑谷:在瀑布深潭间,邂逅畲族的历史与风情

在江西省抚州市乐安县南部的群山之中&#xff0c;坐落着一处以瀑布群和原始森林风貌著称的景区——金竹飞瀑谷。这片区域也被称为金竹瀑布群&#xff0c;是国家4A级旅游景区&#xff0c;并曾获评“江西百景”之一。其核心景观是由大小26处瀑布组成的吓通瀑布群&#xff0c;总落…

作者头像 李华
网站建设 2026/4/20 23:27:42

Z-Image-Turbo预设按钮原理:快速尺寸配置的技术实现

Z-Image-Turbo预设按钮原理&#xff1a;快速尺寸配置的技术实现 技术背景与设计动机 在AI图像生成领域&#xff0c;用户对操作效率和输出质量的平衡需求日益增长。阿里通义推出的Z-Image-Turbo模型以其高效的推理速度著称&#xff0c;但在实际使用中&#xff0c;用户频繁面临一…

作者头像 李华
网站建设 2026/4/17 23:31:13

M2FP模型部署的硬件选型建议

M2FP模型部署的硬件选型建议 &#x1f9e9; M2FP 多人人体解析服务&#xff1a;从算法到落地的关键挑战 随着AI视觉技术在虚拟试衣、智能健身、数字人生成等场景中的广泛应用&#xff0c;多人人体解析&#xff08;Human Parsing&#xff09; 正成为图像理解领域的重要能力。M2F…

作者头像 李华
网站建设 2026/4/17 21:50:39

Z-Image-Turbo材质模拟:金属、玻璃、布料质感区分

Z-Image-Turbo材质模拟&#xff1a;金属、玻璃、布料质感区分 引言&#xff1a;AI图像生成中的材质表达挑战 在当前AIGC&#xff08;人工智能生成内容&#xff09;快速发展的背景下&#xff0c;真实感材质模拟已成为高质量图像生成的核心瓶颈之一。阿里通义推出的Z-Image-Turbo…

作者头像 李华