java小白第九天之MyBatis Plus

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

本文是边看黑马b站视频边写的一片笔记, 文中大多图片都来自黑马视频. 旨在巩固学习以及方便后续查阅和供广大朋友们学习, 感谢黑马视频分享

01 MybatisPlus

在这里插入图片描述
在这里插入图片描述

01 快速入门

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
快速入门
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

02 简介

MyBatis Plus

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();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值