MybatisPlus的知识点

2023-05-16

文章目录

  • MybatisPlus的知识点
    • 常用注解
      • 分页功能
    • 条件查询方式
        • 按条件查询
        • NULL值处理
        • 查询投影
        • 查询条件的设定
        • 字段映射与表名映射
        • id生成策略(insert)
        • 逻辑删除(Delete/Update)
        • 乐观锁

MybatisPlus的知识点

在这里插入图片描述
通过使用dao的接口来调用方法

  • insert() 给数据库中插入某个元素或对象
  • deleteById() 通过id进行产删除
  • updateById(Object) 修改元素的某项值
  • selectById() 通过id来进行查询
  • selectList(null) 查询所有

常用注解

  • @Data,为当前实体类在编译期设置对应的get/set方法,无参/无参构造方法,toString方法,
    hashCode方法,equals方法等

分页功能

  • 在配置类中设置响应的拦截器,就可以实现分页功能
@Configuration       //确保可以被配置类扫描到
public class MybatisPlusConfig {

    //制作分页拦截器
    @Bean      
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        //1.定义MP拦截器
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        //2.添加具体的拦截器
        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());    //添加分页的拦截器
        mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());  //添加乐观锁的拦截器
        return mpInterceptor;

    }

  • 实现分页查询
//分页查询
@Test
void testSelectPage(){
//1 创建IPage分页对象,设置分页参数
IPage<User> page=new Page<>(1,3);
//2 执行分页查询
userDao.selectPage(page,null);
//3 获取分页结果
System.out.println("当前页码值:"+page.getCurrent());
System.out.println("每页显示数:"+page.getSize());
System.out.println("总页数:"+page.getPages());
System.out.println("总条数:"+page.getTotal());
System.out.println("当前页数据:"+page.getRecords());
}

条件查询方式

按条件查询

  • mybatisplus将条件查询的条件封装在Wrapper中,从而进行条件查询
  • 方式一
QueryWrapper qw = new QueryWrapper();
        qw.lt("age", 18);    //添加条件,age<18
        List<User> userList = userDao.selectList(qw);
        System.out.println(userList);
  • 方式二:lambda格式条件查询
//方式二:lambda格式条件查询
       QueryWrapper<User> wq = new QueryWrapper<>();
        wq.lambda().lt(User::getAge,10);
        List<User> userList = userDao.selectList(wq);
        System.out.println(userList);
  • 也可以添加多个条件
`  lqw.lt(User::getAge, 30);
   lqw.gt(User::getAge,10);   //年龄大于10小于30`
 lqw.lt(User::getAge,10).or().gt(User::getAge,30);  //或者关系
    and   //并且关系

NULL值处理

  • 如果有的条件为null,也要执行sql
 //condition条件为真,则执行后面的条件。条件为假则不执行任何操作
        lqw.lt(null!=uq.getAge2(), User::getAge, uq.getAge2());
        lqw.gt(null!=uq.getAge(), User::getAge,uq.getAge());

查询投影

  • LambdaQueryWapper只能查询字段内中的属性名
  • QueryWrapper可以查询字段名和一些函数
  LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
        //显示某些字段,这种格式只适用与Lambda格式
        lqw.select(User::getId,User::getUsername,User::getAge);
//        QueryWrapper<User> qw = new QueryWrapper<>();
//        qw.select("id","username","age","tel");
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);
  • 分组求和
 qw.select("count(*) as count","gender");
        qw.groupBy("gender");  //按性别分组

        List<Map<String, Object>> userList = userDao.selectMaps(qw);

查询条件的设定

  • 范围匹配(> 、 = 、between)
  • 模糊匹配(like)
  • 空判定(null)
  • 包含性匹配(in)
  • 分组(group)
  • 排序(order)

  • eq表示==,相等
wrapper.eq("username", "周周");   //username==周周
  • 范围查询 lt le(<=) gt ge(>=) eq between

  • 删除 ,通过id删除

list.add(18);
        list.add(19);
        userDao.deleteBatchIds(list);

字段映射与表名映射

  • 在模型类属性上方,使用@TableField属性注解,通过value属性,设置当前属性对应的数据库表中的字段关系。
    @TableField(value = “password”,select = false) //将密码暴露很危险,不能被轻易查询
  • 使实体类类名与数据表表名对应
    @TableName(value = “tb_user”)

id生成策略(insert)

在这里插入图片描述

逻辑删除(Delete/Update)

  • 逻辑删除:为数据设置是否可用状态字段,删除时设置状态字段为不可用状态,数据保留在数据库中
 //逻辑删除字段,记录当前字段是否被删除
    @TableLogic(value = "0",delval = "1")
    private int deleted;

乐观锁

乐观锁主张的思想是什么?

  • 业务并发现象带来的问题:秒杀
  • 使用@Version来定义一个乐观锁的字段
//添加乐观锁
    @Version
    private Integer version;

  • 在配置类中添加拦截器
//2.添加乐观锁拦截器
mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
  • 添加乐观锁后,操作成功后,version会+1, 当要操作同一个值时
//1.先通过要修改的数据id将当前数据查询出来
User user = userDao.selectById(3L); //version=3
User user2 = userDao.selectById(3L); //version=3
user2.setName("Jock aaa");
userDao.updateById(user2); //version=>4
user.setName("Jock bbb");
userDao.updateById(user); //verion=3?条件还成立吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MybatisPlus的知识点 的相关文章

  • 对文本和数据进行处理之awk编程

    转载地址 xff1a 点击打开链接 awk 是一种编程语言 xff0c 用于在Linux unix下对文本和数据进行处理 数据可以来自标准输入 stdin 一个或多个文件 xff0c 或其它命令的输出 它支持用户自定义函数和动态正则表达式等
  • Ubuntu20.04在vsCode配置opencv

    一 下载opencv xff1a https opencv org releases 我下载的为opencv4 5 4版本 xff0c 可以直接下载 zip文件 xff0c 可以选择其他版本 Sources版本即为 zip版本 xff1a
  • UISearchController使用中的几个坑和一个知识点

    坑1 点击搜索框后 xff0c 搜索框上移到屏幕之外了 不多说了 xff0c 都是坑 因为我之前设置了 UINavigationBar appearance 61 false 把这个去掉好了 坑2 搜索时搜索框和UITableview中间有
  • 深度学习环境搭建(四)之 CUDNN安装

    安装完CUDA Driver和CUDA后 xff0c 还需要安装CUDNN xff0c NVIDIA用于深度学习GPU加速的库 1 下载CUDNN 访问官网链接 xff0c 根据CUDA版本和Ubuntu版本选择CUDNN的版本 前面使用的
  • NMAP 六种端口状态解读

    NMAP 简介 nmap 是一款功能非常强大的扫描工具 xff0c 不仅能对端口扫描 xff0c 还可以在扫描中指定自定义的标志位 xff0c 对自己的 IP 地址进行隐藏伪装为别的 IP 地址 xff0c 还可以根据 nmap 数据库 x
  • IP ID idle 扫描

    IP ID idle 扫描简单介绍 在1998年的时候 xff0c 一个名叫 Antirez 的工程师 xff0c 发现了这种扫描技术 xff0c 攻击者可以通过不直接向目标主机发送报文的形式 xff0c 进行端口扫描 xff0c 而是通过
  • CentOS下编译Linux内核

    前言 编译内核是一项很简单的事情 xff0c 但却是进入Linux内核世界的第一步 xff0c 想要开发内核代码 xff0c 想要了解内核的运行机制 xff0c 第一步就是编译Linux内核 xff0c 以下是在centos7 5环境下编译
  • CentOS下快速升级gcc版本

    前言 很多时候由于gcc版本过低问题 xff0c 导致我们举步维艰 xff0c 从gcc官网下载源码编译又比较费时费力 xff0c 今天我就给大家分享一个快速升级gcc的方法 升级到gcc 6 3 xff1a devtoolset 6已经结
  • Linux带宽测试

    iperf是linux下一款非常实用的测带宽工具 xff0c 是C S模型的 xff0c 支持使用TCP和UDP测试 xff0c 可以测试带宽 xff0c 丢包 xff08 丢包指的是UDP的丢包 xff0c TCP丢包会重传 xff09
  • initramfs详解-----初识initramfs

    为什么需要initramfs 在Linux内核被加载到内存并运行后 xff0c 内核进程最终需要切换到用户太的进程来使用计算机 xff0c 而用户进程又存在于外存储设备上 xff0c 比如systemd进程 xff0c 通常systemd进
  • 抓包展示vlan报文(8021Q)

    VLAN数据帧格式 要使交换机能够分辨不同VLAN的报文 xff0c 需要在报文中添加标识VLAN信息的字段 IEEE 802 1Q协议规定 xff0c 在以太网数据帧的目的MAC地址和源MAC地址字段之后 协议类型字段之前加入4个字节的V
  • KVM NAT 模型

    目录 NAT原理 virbr0与virbr0 nic virbr0 nic作用 关于kvm中的网桥和virbr0 nic网卡需注意以下几点 xff1a NAT原理 virbr0与virbr0 nic zyq 64 zyq ip a 6 vi
  • Linux查看实时网卡流量的几种方式

    工作中 xff0c 我们经常需要查看服务器的实时网卡流量 通常 xff0c 我们会通过这几种方式查看Linux服务器的实时网卡流量 1 sar n DEV 1 2 sar命令包含在sysstat工具包中 xff0c 提供系统的众多统计数据
  • NUMA详解

    目录 NUMA简介 NUMA开启与关闭 查看系统是否支持 关闭方法 numactl hardware介绍 没有安装numactl工具下查看NUMA架构节点数 xff1a 查看每个NUMA节点的CPU使用情况 xff1a 看每个NUMA节点的
  • OpenStack中的CPU与内存超分详解

    目录 什么是超分 CPU超分 查看虚拟机虚拟CPU运行在哪些物理CPU上 内存超分 内存预留 内存共享 如何设置内存预留和内存共享 全局设置 临时设置 什么是超分 超分通常指的是CPU或者GPU的分区或者分割 xff0c 以在一个物理CPU
  • docker 官方的镜像大多基于debian,但是官方源apt-get update更新失败,如何更换成中国源

    一开始创建容器的时候就应该更换成国内数据源 xff0c 可是我的镜像源在经历重启后 xff0c 回归到官方镜像源 xff0c 当想安装别的linux命令时 xff0c 异常缓慢 xff0c 安装不上 这种情况就是镜像源导致 镜像源可以在容器
  • MySQL学习笔记(11)——创建视图

    11 视图 11 1 创建视图 创建视图的语法 创建视图使用CREATE VIEW语句 xff0c 基本语法格式如下 xff1a span class token keyword create span span class token p
  • Java 实现天气预报

    效果图 1 登录高德地图API开放平台 天气查询 API文档 开发指南 Web服务 API 高德地图API 2 用户在高德地图官网申请web服务API类型KEY 3 天气查询 天气查询API服务地址 xff1a URL https rest
  • 数学建模学习(1)———— 逻辑回归的使用和案例(2022.7.18)

    许多数学建模的使用基本都是一元线性回归 xff0c 和多元线性回归开始 xff0c 但由于经常看关于这两个东西 xff0c 实在不想从这开始整理笔记 xff0c 等后面印象不深后在整理过 文章目录 目录 文章目录 一 逻辑回归介绍 二 逻辑
  • Windows下python和pip的环境配置 ---转载

    本文转载于 xff1a http www cnblogs com yuanzm p 4089856 html 非常感谢原文作者的博文 xff0c 帮助了我学习的不少困惑 这篇文章作为学习使用Python的第一篇文章 xff0c 如何安装Py

随机推荐

  • GreenHills的使用及常用技巧

    GreenHills作为世界知名第三方调试工具支持市面上几乎所有芯片 V850调试工具有多种选择 当时项目使用Greenhills作为编译调试工具让我见识到了专业工具的强大 本文以KPIT AutoSAR的PORT模块为例介绍GreenHi
  • LaTeX 中处理参考文献的三种方法总结

    LaTeX 中处理参考文献的三种方法总结 方法一 xff1a 用BibLaTeX处理 分成如下四步 xff1a 第一步 xff1a 制作生成bib文件 xff1b 第二步 xff1a 在导言区需要加入biblatex宏包 xff1a use
  • mysql8之SSL加密

    新发现 xff1a 安装Mysql8后 xff0c 查看datadir 文件多了不少 xff0c 发现都是SSL加密对应得文件 pem pwd ls l pem data mysqldata rw 1 mysql mysql 1676 3月
  • mysql常用算法积累

    1 mysql计算百分比 使用sum函数 xff0c 如下 xff1a SELECT COUNT AS 总数 SUM CASE WHEN 96 匹配情况 96 61 1 THEN 1 ELSE 0 END AS 总匹配数 SUM CASE
  • Shell知识点回顾

    shell基本的语法 xff1a 定义变量 xff1a key 61 value 注意 xff1a 等号两边不能有空格 xff0c 使用字母数字下划线命名 xff0c 但是不能以数字开发头 xff0c 系统变量建议全大写字母 撤销变量使用的
  • PVE一些记录

    目录 1 简介 2 qm Qemu KVM 虚拟机管理器 3 vmdk img raw转qcow2 4 PVE网卡直通 5 一些位置映射 6 外挂硬盘操作参考 7 查看 修改ip 1 简介 PVE是基于debian的系统 xff0c 使用a
  • ARM架构 Linux 安装 gitlab

    Docker 安装 GitLab 由于 GitLab 官网上下载提供的全是 x86 架构的 xff0c 因此需要安装 ARM 的就需要自己通过源码编译 xff0c 编译的过程也比较繁琐 xff0c 这里使用的则为 Docker 镜像安装 x
  • debian下创建新用户useradd

    1 使用sudo sudo useradd m abc g sudo s bin bash d home abc sudo passwd abc 2 直接在root用户下 xff1a groupadd abc useradd m abc g
  • 第11周 动态规划二

    11 1 买房问题 题目描述 xff1a 蒜头君从现在开始工作 xff0c 年薪 N 万 他希望在蒜厂附近买一套 60平米的房子 xff0c 现在价格是 200 万 假设房子价格以每年百分之 K 增长 xff0c 并且蒜头君未来年薪不变 x
  • IntelliJ IDEA必须使用最新jdk问题解决

    最近碰见一个问题 xff0c 公司的项目大部分是jdk1 7的 xff0c 然后下了最新的IntelliJ IDEA居然需要1 8才能启动 xff0c 这就尴尬了 难道要改java home xff1f 上网搜了下 xff0c 在一个评论区
  • Win7上从硬盘安装Debian

    最近一直想将笔记本搞成Win7 43 Debian双系统 xff0c 因为不管如何优化 xff0c 2G内存的Win7笔记本上开个Linux虚拟机都实在吃力 经过一段时间的资料搜索 xff0c 并阅读Debian官方的安装文档 xff0c
  • 深度探索C++对象模型

    深度探索C 43 43 对象模型 参考链接 第1章 关于对象 Object Lessons C 43 43 的额外成本三种对象模型简单对象模型表格驱动对象模型C 43 43 对象模型 class和struct关键字的差异三种编程典范一个类的
  • 用单片机控制直流电机

    一 设计方案比较与分析 xff1a 1 电机调速控制模块 xff1a 方案一 xff1a 采用电阻网络或数字电位器调整电动机的分压 xff0c 从而达到调速的目的 但是电阻网络只能实现有级调速 xff0c 而数字电阻的元器件价格比较昂贵 更
  • python-类

    面向对象 在编程语言中 xff0c 我们将变量看成数据 xff0c 它用来存储多种形式的值 xff1b 我们将函数看成操作 xff0c 它用来对数据进行某些处理 所有的代码都由数据和操作构成 xff0c 程序运行的本质就是对数据进行各种操作
  • 求模逆元算法的C/C++实现

    include lt stdio h gt Name Copyright Author 64 dujianjian Date 01 11 12 11 26 Description 递归 三元组gcd a b 61 61 ax 43 by 6
  • python显示当前时间

    1 先导入库 xff1a import datetime 2 获取当前日期和时间 xff1a now time 61 datetime datetime now 3 格式化成我们想要的日期 xff1a strftime xff08 xff0
  • pandas中Series的使用

    文章目录 pandas的应用创建Series对象索引花式索引布尔索引Series对象的常用属性describe 方法 xff1a value count 方法unique 方法数据处理的方法 isnull 和notnull dropna 和
  • 什么是数据挖掘

    文章目录 什么是数据挖掘1 分类问题2 聚类问题3 回归问题 数据挖掘相关的标准库 数据挖掘模型训练分类问题聚类问题回归问题关联问题 模型集成模型评估评估指标混淆矩阵与标准率指标泛化能力评估 什么是数据挖掘 数据挖掘就是寻找数据中隐含的知识
  • Json数据传递参数

    文章目录 Json数据传递参数集合参数 xff1a Json格式POJO参数 xff1a json格式集合参数 xff1a json格式 64 RequestBody与 64 RequestParam的区别时间参数的转换 Json数据传递参
  • MybatisPlus的知识点

    文章目录 MybatisPlus的知识点常用注解分页功能 条件查询方式按条件查询NULL值处理查询投影查询条件的设定字段映射与表名映射id生成策略 xff08 insert xff09 逻辑删除 xff08 Delete Update xf