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中测试运行(三步)
相关推荐
Tiny番茄8 分钟前
No module named ‘xxx’报错原因及解决方式
开发语言·python
纪元A梦16 分钟前
贪心算法应用:顶点覆盖问题详解
java·算法·贪心算法
咩咩觉主23 分钟前
c#数据结构 线性表篇 非常用线性集合总结
开发语言·数据结构·unity·c#·游戏引擎·程序框架
李匠202444 分钟前
C++GO语言微服务和服务发现②
开发语言·c++·golang·服务发现
bing_1581 小时前
Spring MVC 中Model, ModelMap, ModelAndView 之间有什么关系和区别?
java·spring·mvc
每次的天空1 小时前
Kotlin 内联函数深度解析:从源码到实践优化
android·开发语言·kotlin
268572591 小时前
JVM 监控
java·开发语言·jvm
promise5241 小时前
JVM之jcmd命令详解
java·linux·运维·服务器·jvm·bash·jcmd
曼岛_1 小时前
[Java实战]Spring Boot 静态资源配置(十三)
java·开发语言·spring boot
篱笆院的狗1 小时前
MySQL 中如何进行 SQL 调优?
java·sql·mysql