湖北省网站建设_网站建设公司_HTTPS_seo优化
2026/1/8 18:58:48 网站建设 项目流程

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需要注意版本问题

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询