MyBatis-Plus

介绍

MyBatis-Plus(简称 MP) 是⼀个 MyBatis 的增强⼯具, 在 MyBatis 的基础上只做增强不做改变, 为简化开 发. 提⾼效率⽽⽣

1.准备⼯作

1.项⽬准备

  1. 创建springboot⼯程

  2. 添加MyBatis-Plus和MySQL依赖, 配置数据库连接信息

添加MyBatis-Plus和MySQL依赖

配置数据库

打印⽇志

2. 数据准备

-- 创建数据库
DROP DATABASE IF EXISTS mybatis_test;
CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;
-- 使⽤数据数据
USE mybatis_test;
-- 创建表 [ ⽤⼾表 ]
DROP TABLE IF EXISTS user_info;
CREATE TABLE `user_info` (
`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
`username` VARCHAR ( 127 ) NOT NULL ,
`password` VARCHAR ( 127 ) NOT NULL ,
`age` TINYINT ( 4 ) NOT NULL ,
`gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1- 男 2- ⼥ 0- 默认 ' ,
`phone` VARCHAR ( 15 ) DEFAULT NULL ,
`delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0- 正常 , 1- 删除 ' ,
`create_time` DATETIME DEFAULT now(),
`update_time` DATETIME DEFAULT now(),
PRIMARY KEY ( `id` )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
-- 添加⽤⼾信息
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'admin' , 'admin' , 18 , 1 , '18612340001' );
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'zhangsan' , 'zhangsan' , 18 , 1 , '18612340002' );
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'lisi' , 'lisi' , 18 , 1 , '18612340003' );
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'wangwu' , 'wangwu' , 18 , 1 , '18612340004' );

2 编码

3.MyBatis-Plus复杂操作(重点)

1.注解:TableName、TableField、TableId

2.条件构造器

以下是主要的 Wrapper 类及其功能:
AbstractWrapper:这是⼀个抽象基类, 提供了所有 Wrapper 类共有的⽅法和属性. 详细参考官⽹
介绍: 条件构造器
QueryWrapper:⽤于 构造查询条件, 在AbstractWrapper的基础上拓展了⼀个select⽅法, 允许指
定查询字段.
UpdateWrapper: ⽤于 构造更新条件 , 可以在更 新数据时指定条件 .
LambdaQueryWrapper:基于 Lambda 表达式的查询条件构造器 , 它通过 Lambda 表达式来引⽤
实体类的属性,从⽽避免了硬编码字段名.
LambdaUpdateWrapper: 基于 Lambda 表达式的更新条件构造器, 它允许你使⽤ Lambda 表达
式来指定更新字段和条件,同样避免了硬编码字段名的问题.

1 QueryWrapper

QueryWrapper并不只⽤于查询语句, ⽆论是修改, 删除, 查询, 都可以使⽤QueryWrapper来构建查询条 件

2 UpdateWrapper

对于更新, 我们也可以直接使⽤ UpdateWrapper, 在不创建实体对象的情况下, 直接设置更新字段和条 件.

3 LambdaQueryWrapper

QueryWrapper 和 UpdateWrapper存在⼀个问题, 就是需要写死字段名, 如果字段名发⽣变更, 可能会 因为测试不到位酿成事故.
MyBatis-Plus 给我们提供了⼀种基于Lambda表达式的条件构造器, 它通过 Lambda 表达式来引⽤实体 类的属性,从⽽避免了硬编码字段名, 也提⾼了代码的可读性和可维护性.

LambdaQueryWrapper

LambdaUpdateWrapper
分别对应上述的QueryWrapper和UpdateWrapper
就多加queryWrapper.lambda()

3. ⾃定义SQL

在实际的开发中, MyBatis-Plus提供的操作不能满⾜我们的实际需求, MyBatis-Plus 也提供了⾃定义
SQL的功能, 我们可以利⽤Wrapper构造查询条件, 再结合Mapper编写SQL

4. 总结

  1. MyBatis-Plus 是 MyBatis 的增强⼯具, 在 MyBatis 的基础上只做增强不做改变, 可以⽤更少的代码
    实现数据库表的CRUD, 让我们的开发变得更加简单.
  2. MyBatis-Plus ⽀持⾃定义SQL, 版本不低于3.0.7, 传递 Wrapper 对象作为参数时, 参数名必须为 ew, 在 SQL 语句中,使⽤ ${ew.customSqlSegment} 来引⽤ Wrapper 对象⽣成的 SQL ⽚段

    1.先Mapper里继承BaseMapper<>接口,再Text运行(两步
    自定义2.先Mapper里@Select等再在Text中测试运行(两步)
    3.先Mapper里定义,再在XML里<select>等,最后在Text中测试运行(三步)
相关推荐
CodeCraft Studio2 分钟前
PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 Base64
开发语言·python·pdf·base64·aspose·aspose.pdf
零点零一3 分钟前
VS+QT的编程开发工作:关于QT VS tools的使用 qt的官方帮助
开发语言·qt
颜如玉30 分钟前
🤲🏻🤲🏻🤲🏻临时重定向一定要能重定向🤲🏻🤲🏻🤲🏻
java·http·源码
程序员的世界你不懂2 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
星空寻流年2 小时前
设计模式第一章(建造者模式)
java·设计模式·建造者模式
lingchen19062 小时前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
gb42152873 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
一朵梨花压海棠go3 小时前
html+js实现表格本地筛选
开发语言·javascript·html·ecmascript
曾经的三心草3 小时前
Python2-工具安装使用-anaconda-jupyter-PyCharm-Matplotlib
android·java·服务器
蒋星熠3 小时前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程