目录
Mybatis-plus是什么:
Mybatis-plus简称MP,是mybatis的增强工具,在mybatis上只做增强不做改变,为简化开发,提高效率而生
Mp入门:
1. 创建数据库,创建数据库表
CREATE DATABASE mybatis-plus; USE `mybatis-plus`; CREATE TABLE USER ( id BIGINT(20)NOT NULL COMMENT '主键ID', NAME VARCHAR(30)NULL DEFAULT NULL COMMENT '姓名', age INT(11)NULL DEFAULT NULL COMMENT '年龄', email VARCHAR(50)NULL DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (id) ); INSERT INTO USER (id, NAME, age, email)VALUES (1, 'Jone', 18, 'test1@baomidou.com'), (2, 'Jack', 20, 'test2@baomidou.com'), (3, 'Tom', 28, 'test3@baomidou.com'), (4, 'Sandy', 21, 'test4@baomidou.com'), (5, 'Billie', 24, 'test5@baomidou.com'); SELECT * FROM USER; |
2. 创建springboot工程:mp_study
Springboot版本改为2.2.1版本
3. 引入mybatis-plus和相关依赖:
<!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1</version> </dependency> <!--mysql依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--lombok用来简化实体类: 用注解代替手写get,set方法,使用前记得在idea中先安装lombok插件 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> |
4. 配置数据库信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mybatis-plus?serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=密码 |
5. 创建实体包entity以及类User
6. 创建包mapper,包下创建接口UserMapper(核心部分)
7. 在启动类上添加注解MapperScan(“mapper路径”)
8. 在测试类中添加如下:
9. MP查看sql输出日志:
#mybatis日志 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl |
Mp添加操作:
mp主键策略:
使用前提:在建表的时候没有设置主键自增
1. 默认assign_id,使用了雪花算法
2. 设置主键自增策略:auto
添加配置信息:
#全局设置主键生成策略 mybatis-plus.global-config.db-config.id-type=auto |
MP 修改操作:
MP自动填充:
对于一些属性值的设置,不用每次都用相同方式去填充。利用mybatis-plus自动填充可以实现。
1. 在表中增加两个字段create_time,update_time 2. 在实体类中加上对应属性 3. 在实体类要进行自动填充属性添加注解 4. 创建类用于实现接口,再实现其中两个方法,一个方法添加执行,一个方法修改执行 测试: 添加一个值,查看创建和修改时间是否自动填充。 |
MP乐观锁:
乐观锁: 很乐观,拿数据时认为别人不会修改,所以不会上锁。
在更新的时候会判断在此期间别人有没有去更新这个数据,使用版本号机制。
Mp实现乐观锁步骤:
1. 在表添加字段version作为版本号,在表对应实体类添加版本号属性 2. 在实体类版本号属性上添加@version注解 3. 配置初始值: 4. 配置mp乐观锁插件,创建配置类config,再创建类MyConfig
|
MP查询操作:
1. 多个id批量查询:selectBatchIds(Arrays.asList(1,2,3))
2. 条件查询: selectByMap(map)
3. 分页查询: selectPage()
在配置类中配置分页插件
编写分页代码
创建Page对象,传入两个参数(当前页,每页记录数)
MP 删除操作:
根据id删除: deleteById()
批量删除:
条件删除:deleteByMap(map)
逻辑删除
使用场景:
可以进行数据恢复;有关联数据,不便删除
在表中添加字段,作为逻辑删除标志,每次删除时候,修改标志位
0 没有删除 1 已经删除
配置:添加逻辑删除初始值为0表示没删除 |
MP 复杂查询:
条件构造器和常用接口
Wrapper介绍:单词意思,封装,包装,mp中wrapper封装了很多复杂的查询方法。
setSqlSelect 设置 SELECT 查询字段 where WHERE 语句,拼接 + WHERE 条件 and AND 语句,拼接 + AND 字段=值 andNew AND 语句,拼接 + AND (字段=值) or OR 语句,拼接 + OR 字段=值 orNew OR 语句,拼接 + OR (字段=值) eq 等于= allEq 基于 map 内容等于= ne 不等于<> gt 大于> ge 大于等于>= lt 小于< le 小于等于<= like 模糊查询 LIKE notLike 模糊查询 NOT LIKE in IN 查询 notIn NOT IN 查询 isNull NULL 值查询 isNotNull IS NOT NULL groupBy 分组 GROUP BY having HAVING 关键词 orderBy 排序 ORDER BY orderAsc ASC 排序 ORDER BY orderDesc DESC 排序 ORDER BY exists EXISTS 条件语句 notExists NOT EXISTS 条件语句 between BETWEEN 条件语句 notBetween NOT BETWEEN 条件语句 addFilter 自由拼接 SQL last 拼接在最后,例如:last(“LIMIT |