java小白第九天之MyBatis Plus
写在前面
本文是边看黑马b站视频边写的一片笔记, 文中大多图片都来自黑马视频. 旨在巩固学习以及方便后续查阅和供广大朋友们学习, 感谢黑马视频分享
01 MybatisPlus


01 快速入门



快速入门







02 简介
02 标准数据层开发



01 MyBatis Plus 分页查询功能



03 DQL 编程控制


01 条件查询方式
01 条件查询 – ``Wrapper
lt 小于 , gt 大于 , le 小于等于 , ge 大于等于 , eq 等于



02 条件查询-null 值处理



02 查询投影
查询指定字段或使用分组,计数等功能

03 复杂查询条件




04 字段与表名映射
01 问题一 表字段与编码属性设计不同步

**使用注解 @TableField(value = "表中字段名") **

02 问题二 编码中添加了数据库中未定义的属性 online

使用注解 @TableField(exist = false) 说明该属性只在编程中使用,数据库中没有

03 问题三 默认查询开放了过多字段的查询权限
即默认查询会查询出所有字段内容,进行展示,包括密码等不可以直接展示的字段

在注解 @TableFiled中添加select属性

04 问题四 表明与编码类名不一致


05 注解 @TableField


06 注解 @TableName

04 DML 编程控制

01 id生成策略


雪花id

02 一些全局配置



03 多记录操作
一次删除多条记录


04 逻辑删除
直接将业务数据从数据库中删除,会影响其他有用数据,如下图所示
所以业务数据一般执行的是逻辑删除
即:使用一个专用字段标记该数据是否被删除

01 数据库的表中增加deleted字段

02 实体类增加属性 deleted
使用注解 @TableLogic 并注明value与deval的值,前者表示该条数据未删除,后者表示该条数据已删除
属性:deleted
+ 0: 未删除
+ 1: 已删除
+ 注意
+ 当使用 mybatis plus 中的查询语句时, deleted = 1 的记录不再显示,即 该属性的值会影响mybatis plus中所有其他 sql 操作,会自动加上 where deleted = 0 条件。 若想查询到该记录,自己写 sql,
这里也可以使用全局配置

执行结果示例
Sql语句为 UPDATE

逻辑删除步骤
记得设置 deleted 的默认值为0,表示未删除

单张表设置逻辑删除字段的属性:
记得标明注解中 value 与 deval 的值

全局配置逻辑删除字段 deleted
所有表都有一个字段表示逻辑删除

注意
- 使用逻辑删除后, mybatis plus 执行的删除操作变为更新操作
- 逻辑删除字段会影响到 mybatis plus 中其他 sql 操作的结果
05 乐观锁
解决并发问题

添加乐观锁的步骤





05 快速开发





导坐标






代码示例
package com.itheima;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
public class CodeGenerator {
public static void main(String[] args) {
//1.获取代码生成器的对象
AutoGenerator autoGenerator = new AutoGenerator();
//设置数据库相关配置
DataSourceConfig dataSource = new DataSourceConfig();
dataSource.setDriverName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC");
dataSource.setUsername("root");
dataSource.setPassword("root");
autoGenerator.setDataSource(dataSource);
//设置全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(System.getProperty("user.dir")+"/mybatisplus_04_generator/src/main/java"); //设置代码生成位置
globalConfig.setOpen(false); //设置生成完毕后是否打开生成代码所在的目录
globalConfig.setAuthor("黑马程序员"); //设置作者
globalConfig.setFileOverride(true); //设置是否覆盖原始生成的文件
globalConfig.setMapperName("%sDao"); //设置数据层接口名,%s为占位符,指代模块名称
globalConfig.setIdType(IdType.ASSIGN_ID); //设置Id生成策略
autoGenerator.setGlobalConfig(globalConfig);
//设置包名相关配置
PackageConfig packageInfo = new PackageConfig();
packageInfo.setParent("com.aaa"); //设置生成的包名,与代码所在位置不冲突,二者叠加组成完整路径
packageInfo.setEntity("domain"); //设置实体类包名
packageInfo.setMapper("dao"); //设置数据层包名
autoGenerator.setPackageInfo(packageInfo);
//策略设置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setInclude("tbl_user"); //设置当前参与生成的表名,参数为可变参数
strategyConfig.setTablePrefix("tbl_"); //设置数据库表的前缀名称,模块名 = 数据库表名 - 前缀名 例如: User = tbl_user - tbl_
strategyConfig.setRestControllerStyle(true); //设置是否启用Rest风格
strategyConfig.setVersionFieldName("version"); //设置乐观锁字段名
strategyConfig.setLogicDeleteFieldName("deleted"); //设置逻辑删除字段名
strategyConfig.setEntityLombokModel(true); //设置是否启用lombok
autoGenerator.setStrategy(strategyConfig);
//2.执行生成操作
autoGenerator.execute();
}
}

本文介绍了MyBatisPlus的学习笔记,包括快速入门、分页查询、条件查询、字段映射及DML编程控制等。讲解了如何处理字段与编码属性不同步、未定义属性、查询权限及表名不一致的问题,并探讨了ID生成策略、逻辑删除和乐观锁的概念及其应用。通过代码示例展示了如何使用AutoGenerator生成代码。

被折叠的 条评论
为什么被折叠?



