当前位置: 首页 > news >正文

MybatisPlus(3)

前言🍭

❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️

Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客

 一、查询投影🍭

查询投影是指在查询操作中,只选择需要的字段进行返回,而不是返回整个实体对象。这样可以减少网络传输的数据量,提高查询的效率。

1、查询指点字段🍉

 @Testvoid textGetAll() {LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();List<User> userList = userDao.selectList(lqw);System.out.println(userList);}

 正常查询是这样,会将所有字段都查询到,

然后当我们想查询部分字段时,这就叫查询投影。

1、lambda格式🍓

我们只查询id、name、age三个字段:

 @Testvoid textGetAll() {LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();lqw.select(User::getId,User::getName,User::getAge);List<User> userList = userDao.selectList(lqw);System.out.println(userList);}

 运行结果:

可以看到这样确实只查询了三个字段,其他字段都显示为null。但是这种格式的写法只适用于lambda格式,如果不是lambda格式则是另一种写法。

2、非lambda格式🍓

查询id、name、age、tel四个字段:

 @Testvoid textGetAll() {QueryWrapper<User> lqw=new QueryWrapper<>();lqw.select("id","name","age","tel");List<User> userList = userDao.selectList(lqw);System.out.println(userList);}

运行结果:

2、查询条数(count)🍉

 当我们想查询数据条数时,应该怎么办?lambda格式写法可做不了程序条数。

    @Testvoid textGetAll() {QueryWrapper<User> lqw=new QueryWrapper<>();lqw.select("count(*)");List<Map<String, Object>> userList = userDao.selectMaps(lqw);System.out.println(userList);}

运行结果:

设置别名:🍓

可以看出这很好查出来了,共有四条数据,但是最下面结果会不会觉得丑了点,那我们给它设置一个别名:

    @Testvoid textGetAll() {QueryWrapper<User> lqw=new QueryWrapper<>();lqw.select("count(*) as count");List<Map<String, Object>> userList = userDao.selectMaps(lqw);System.out.println(userList);}

运行代码:

3、分组查询🍉

我们来一个按电话分组查询

    @Testvoid textGetAll() {QueryWrapper<User> lqw=new QueryWrapper<>();lqw.select("count(*) as count, tel");lqw.groupBy("tel");List<Map<String, Object>> userList = userDao.selectMaps(lqw);System.out.println(userList);}

user表: 

运行结果: 

MybatisPlus查询也并不是什么都可以查询,适用于任何情况,当有些情况实现不了时,还得老老实实的使用Mybatis时候的写法,写查询语句写Mapper。

二、查询条件设置🍭

MyBatis-Plus提供了多种方式来设置查询条件,可以根据具体的需求选择适合的方式。

1、匹配查询🍉

我们平时去进行登录操作时就会进行用户名和密码匹配,那在MyBatis-Plus中然后去进行查询呢?

    @Testvoid textGetAll() {LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();//等同于=lqw.eq(User::getName,"张三").eq(User::getPassword,"123456");List<User> userList=userDao.selectList(lqw);//因为我们本来就是查询一个用户,使用可以使用selectOne替换上面这条语句//User loginUser=userDao.selectOne(lqw);System.out.println(userList);}

运行测试代码:

这里查询出来了张三用户,不过在当我们去使用这个操作时一般不会用密码原文,而是经过加密的密码。

2、模糊匹配🍉

在MyBatis-Plus中进行模糊匹配,可以使用like方法来设置模糊查询条件。以下是使用like方法进行模糊匹配的示例:

    @Testvoid textGetAll() {LambdaQueryWrapper<User> lqw=new LambdaQueryWrapper<>();//模糊查询lqw.like(User::getName,"三");List<User> userList=userDao.selectList(lqw);System.out.println(userList);}

查询结果: 

我们可以在控制台看到这个like中的百分号(%)是加在三的左右两边都有。

likeRight的百分号就在右边

在官网中还有很多条件构造器,感兴趣的同学可以前往官网学习:

条件构造器 | MyBatis-Plus (baomidou.com)

三、映射匹配兼容性🍭

MyBatis-Plus对于映射匹配的兼容性非常好,它与MyBatis框架完全兼容,并且提供了更多的便利功能。

MyBatis-Plus使用的是MyBatis框架作为底层,它与MyBatis的映射配置文件(Mapper XML)和注解方式完全兼容。这意味着你可以继续使用MyBatis的映射方式,或者选择使用MyBatis-Plus提供的注解方式,二者可以灵活切换。

1、表字段和编码属性设计不同步🍓

 在实际情况中肯定有这样的情况,就是设计数据库的人设计的字段名和后端写实体类的人设计的属性名不一样:

那这个时候可以加一个@TableField注解 ,让我们来做这个字段的映射。

package com.example.domain;import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;@Data
public class User {private Long id;private String name;@TableField(value = "pwd")private String password;private Integer age;private String tel;
}

@TableField是MyBatis-Plus提供的注解之一,用于指定实体类中的字段与数据库表中的列的映射关系。

使用@TableField注解可以对实体类的字段进行一些配置,包括字段名、是否为数据库表的主键、是否为自动填充字段等。

以下是@TableField注解的常用属性:

  • value:指定字段与数据库表的列名的映射关系,如果不指定,默认使用实体类字段名与数据库表的列名一致。
  • exist:指定该字段是否为数据库表的列,如果设置为false,则该字段不参与数据库表的映射,默认为true
  • el:指定实体类字段与数据库列的映射关系的表达式,用于处理复杂的映射关系。
  • fill:指定该字段是否为自动填充字段,可选值为FieldFill枚举类中的常量,如FieldFill.INSERTFieldFill.UPDATE等。

2、编程中添加了数据库中未定义的属性🍓

 在User实体类中我们添加一个online字段,用来去判断用户是否在线,但是数据库中并不需要添加这个字段,那我们应该怎么去实现 让MybatisPlus去查询数据库。

给online添加@TableField注解,设置属性exist为false即可。

package com.example.domain;import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;@Data
public class User {private Long id;private String name;@TableField(value = "pwd")private String password;private Integer age;private String tel;@TableField(exist = false)private Integer online;
}

3、采用默认 查询开放了更多的字段查看权限🍓

在一般查询用户信息时,一般数据库中用户的密码信息是不会进行查询的,那这时候使用MybatisPlus应该如何去实现呢?

package com.example.domain;import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;@Data
public class User {private Long id;private String name;@TableField(value = "pwd",select = false)private String password;private Integer age;private String tel;@TableField(exist = false)private Integer online;
}

如上面所示我们只需要给@TableField注解,设置select属性为false。

 可以看到设置之后就没有password字段的信息了。

4、表名和编码开发设计不同步🍓

这个问题就是数据库表名和实体类的类名不一致时,应该怎么办呢?

package com.example.domain;import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;@Data
@TableName("tbl_user")
public class User {private Long id;private String name;@TableField(value = "pwd",select = false)private String password;private Integer age;private String tel;@TableField(exist = false)private Integer online;
}

数据库表名为tbl_user。

还是一样可以查询到数据的。

相关文章:

MybatisPlus(3)

前言&#x1f36d; ❤️❤️❤️SSM专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 一、查询投影&#x1f36d; 查询投影是指在查询操作中&#xff0c;只选择…...

安全计算环境技术测评要求项

1.身份鉴别-在应用系统及各类型设备中确认操作者身份的过程&#xff08;身份鉴别和数据保密&#xff09; 1-2/2-3/3-4/4-4 a&#xff09;应对登录的用户进行身份标识和鉴别&#xff0c;身份标识具有唯一性&#xff0c;身份鉴别信息具有复杂度要求并定期更换 b&#xff09;应具有…...

Excel快捷键表

工作表插入新工作表ShiftF11或AltShiftF1移动到工作簿中的下一张工作表CtrlPageDown移动到工作簿中的上一张工作表CtrlPageUp选定当前工作表和下一张工作表ShiftCtrlPageDown取消选定多张工作表Ctrl PageDown选定其他的工作表CtrlPageUp选定当前工作表和上一张工作表ShiftCtrlP…...

Windows Server 系统各版本及授权说明(附下载地址

本文为Windows Server系统各版本差异对比及授权说明。 会对相关目前仍主流使用的相关Windows Server系统版本和相关授权进行对比和功能说明。 WindowsServer2012 R2 Windows Server 2012 R2授权方式是按照物理CPU数量进行授权&#xff0c;比如物理服务器CPU插槽数量2&#xff…...

【智慧工地源码】物联网和传感器技术在智慧工地的应用

物联网&#xff08;IoT&#xff09;和传感器技术在智慧工地中扮演着至关重要的角色。这些技术的应用&#xff0c;使得智慧工地能够实现对施工过程的精确监控、数据收集和分析&#xff0c;以及设备互联&#xff0c;从而提高工程效率、减少成本并改善工人的工作环境。 一、物联网…...

计算机安全学习笔记(IV):基于角色的访问控制 - RBAC

RBAC(Role-Based Access Control)基于用户在系统中设定的角色而不是用户的身份。一般来说&#xff0c;RBAC模型定义角色为组织中的一项工作职责&#xff0c;RBAC系统给角色而不是给单独的用户分配访问权。用户根据他们的职责被静态地或动态地分配给不同的角色。 RBAC模型间的关…...

MFC中的Button修改颜色的方法

添加工具箱下面的MFC Button Control控件&#xff08;不使用普通的Button控件&#xff09;&#xff1b;给按键添加变量&#xff1a;m_MFCButton1&#xff0c;变量类型&#xff08;默认&#xff09;为&#xff1a;CMFCButton&#xff1b;testDlg.cpp中初始化中添加如下代码&…...

【算法】选择排序

选择排序 选择排序代码实现代码优化 排序&#xff1a; 排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a; 假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&…...

golang之context实用记录

简言 WithCancel()函数接受一个 Context 并返回其子Context和取消函数cancel 新创建协程中传入子Context做参数&#xff0c;且需监控子Context的Done通道&#xff0c;若收到消息&#xff0c;则退出 需要新协程结束时&#xff0c;在外面调用 cancel 函数&#xff0c;即会往子C…...

音视频FFmpeg简单理解学习,必学技术

FFmpeg是一个开源的多媒体框架&#xff0c;它包含了一个用于音频和视频编解码的库。它可以执行各种多媒体操作&#xff0c;如格式转换、视频剪辑、音频处理等。可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。 FFmpeg的结构 默认的编译会生成…...

一款内网信息收集利用工具

FuckDomainMini 简介 这是一款基于java开发Windows的内网信息收集、利用工具 可以节省您的信息收集所花费的&#xff0c;又或者是做免杀所花费的时间 现在这个版本是先行版本&#xff0c;目前先行版只有一个功能&#xff0c;更多的功能还在调试与开发中。 尽情期待&#x…...

数据库表的操作

目录 一、表的创建 1、创建语法 2、创建案例 二、查看表结构 三、修改表 1、修改表名 2、添加记录 3、修改列属性 4、添加列&#xff08;字段&#xff09; 5、删除列&#xff08;字段&#xff09; 6、修改列名字 四、删除表 五、修改表结构的风险 1、风险 2、建议 一、表的创建…...

Golang开发--channel的使用

在 Go 语言中&#xff0c;channel&#xff08;通道&#xff09;是一种用于在 goroutine 之间进行通信和同步的并发原语。它提供了一种安全且简单的方式来传递数据。 通道的详细描述和使用方法 1.定义通道&#xff1a; 通道是通过使用 make 函数来创建的。通道有特定的类型&am…...

SQL sever中表管理

目录 一、创建表&#xff1a; 1.1语法格式&#xff1a; 1.2示例&#xff1a; 二、修改表&#xff1a; 2.1语法格式&#xff1a; 2.2示例&#xff1a; 三、删除表&#xff1a; 3.1语法格式&#xff1a; 3.2示例&#xff1a; 四、查询表&#xff1a; 4.1语法格式&…...

CSSoverflow 属性

overflow 属性用于设置当元素中的内容溢出后的情况。 值得注意的是: 所谓溢出&#xff0c;是指子元素的大小&#xff08;包括文本、元素或图片等&#xff09;超出父元素的区域&#xff0c;会有一部分内容显示在父元素所在的区域外。 属性值描述visible默认值。内容不会被修剪&a…...

08:STM32----DMA数据转运

目录 1:简历 2:存储器映像 3:DMA基本结构 4: DMA转运的条件 5:DMA请求 A:DMA数据转运 1:连接图 2:数据转运DMA 3:函数介绍 4:步骤 5:代码 B:DMAAD多通道 1:连接图 2:结构图 3:函数介绍 4:代码 1:简历 DMA&#xff08;Direct Memory Access&#xff09;直接存储…...

Golang 程序漏洞检测利器 govulncheck(二):漏洞数据库详解

上一篇文章详细介绍了 Golang 程序漏洞扫描工具 govulncheck 的使用方法&#xff0c;govulncheck 强大功能的背后&#xff0c;离不开 Go 漏洞数据库&#xff08;Go vulnerability database&#xff09;的支持&#xff0c;接下来详细讲解下 Go 漏洞数据库相关的知识。 Go 漏洞数…...

[JDK8下的HashMap类应用及源码分析] 数据结构、哈希碰撞、链表变红黑树

系列文章目录 [Java基础] StringBuffer 和 StringBuilder 类应用及源码分析 [Java基础] 数组应用及源码分析 [Java基础] String&#xff0c;分析内存地址&#xff0c;源码 [JDK8环境下的HashMap类应用及源码分析] 第一篇 空构造函数初始化 [JDK8环境下的HashMap类应用及源码分…...

高等数学刷题

两个公式本质都是相同的 Π/2 1^∞类型...

lintcode 1840 · 矩阵还原【中等 vip 二维前缀和数组】

题目 https://www.lintcode.com/problem/1840 现有一个n行m列的矩阵 before&#xff0c;对于before里的每一个元素 before[i][j]&#xff0c;我们会使用以下算法将其转化为 after[i][j]。现给定after矩阵&#xff0c;请还原出原有的矩阵before。s 0 for i1: 0 -> ifor j1…...

告别Keil,用VSCode+GCC+STM32CubeMX的Makefile在Windows上编译STM32F103(附完整配置流程)

从Keil到VSCode&#xff1a;打造现代化STM32开发环境全指南 在嵌入式开发领域&#xff0c;商业IDE&#xff08;如Keil MDK&#xff09;长期占据主导地位&#xff0c;但随着开源工具链的成熟和开发者对效率要求的提升&#xff0c;越来越多的工程师开始寻求更灵活、更现代化的开…...

人工智能应用- 走向未来:02.人工智能研究方向

随着技术的发展&#xff0c;以深度神经网络为代表的人工智能技术在取得突破的同时&#xff0c;也逐渐暴露出一些基础性问题。这些问题促使科学家们思考人工智能的下一步发展。本节将从几个关键方面&#xff0c;探讨当前人工智能的重要研究方向。可解释性与可控性首先&#xff0…...

Canvas Quest商业人像生成应用:电商模特图低成本自动化生产方案

Canvas Quest商业人像生成应用&#xff1a;电商模特图低成本自动化生产方案 1. 电商模特图的痛点与机遇 电商行业有个公开的秘密&#xff1a;商品展示图的拍摄成本往往比商品本身还高。特别是服装、配饰和美妆类目&#xff0c;每季新品需要拍摄上百套模特图&#xff0c;传统方…...

毫米波雷达信号处理入门:用MATLAB解析DCA1000采集的IWR6843原始数据(附代码)

毫米波雷达信号处理实战&#xff1a;从原始数据到距离谱的MATLAB实现 在自动驾驶和智能感知领域&#xff0c;毫米波雷达因其全天候工作能力和精确的距离测量特性&#xff0c;成为不可或缺的传感器。当开发者完成硬件配置和数据采集后&#xff0c;面对adc_data.bin这样的原始数据…...

SQL视图实战:5个真实业务场景下的数据视图应用案例(附代码)

SQL视图实战&#xff1a;5个真实业务场景下的数据视图应用案例&#xff08;附代码&#xff09; 在数据驱动的业务环境中&#xff0c;SQL视图&#xff08;View&#xff09;就像给数据库操作装上了"快捷方式"按钮。想象一下&#xff0c;当市场部门需要实时销售数据时&a…...

Z-Image-GGUF实战:为Android应用集成AI头像生成功能

Z-Image-GGUF实战&#xff1a;为Android应用集成AI头像生成功能 最近在做一个社交类的Android应用&#xff0c;产品经理提了个需求&#xff0c;想加入一个“AI生成个性头像”的功能。用户上传一张自己的照片&#xff0c;选择喜欢的风格&#xff08;比如动漫风、油画感、像素艺…...

为什么最终选 TQUIC:T-Box QUIC 库选型的约束过滤与源码验证

"为什么选 TQUIC&#xff1f;XQUIC 是阿里的&#xff0c;也有 MPQUIC 和 FEC&#xff0c;而且是 C 实现&#xff0c;不是更容易集成吗&#xff1f;"架构师的这个问题&#xff0c;比"为什么不用 quiche"更难回答。quiche 没有 MPQUIC&#xff0c;一句话就能…...

罗技鼠标PUBG压枪宏:三步实现稳定射击的终极指南

罗技鼠标PUBG压枪宏&#xff1a;三步实现稳定射击的终极指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg logitech-pubg是一个专为绝地求生玩…...

比迪丽FLUX.1效果对比:相比SDXL,面部结构准确率提升18.7%

比迪丽FLUX.1效果对比&#xff1a;相比SDXL&#xff0c;面部结构准确率提升18.7% 1. 引言&#xff1a;当动漫角色遇上新一代AI绘画引擎 如果你是一位《龙珠》的粉丝&#xff0c;或者热衷于用AI生成动漫角色&#xff0c;那么“比迪丽”这个名字你一定不陌生。作为悟饭的妻子&a…...

完整构建流程:从CMake配置到PyPI分发的nanobind项目部署

完整构建流程&#xff1a;从CMake配置到PyPI分发的nanobind项目部署 【免费下载链接】nanobind nanobind: tiny and efficient C/Python bindings 项目地址: https://gitcode.com/gh_mirrors/na/nanobind nanobind是一个用于创建C/Python绑定的轻量级高效工具&#xff0…...