mybatis-plus深入学习篇(三)

news2024/10/3 10:40:51

mybatis-plus深入学习篇(三)

1 准备工作

1.1 建表sql语句(Emp表)

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for emp
-- ----------------------------
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp`  (
  `EMPNO` int NOT NULL AUTO_INCREMENT,
  `ENAME` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
  `JOB` varchar(9) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
  `MGR` double NULL DEFAULT NULL,
  `HIREDATE` date NULL DEFAULT NULL,
  `SAL` double NULL DEFAULT NULL,
  `COMM` double NULL DEFAULT NULL,
  `DEPTNO` int NULL DEFAULT NULL,
  PRIMARY KEY (`EMPNO`) USING BTREE,
  INDEX `DEPTNO`(`DEPTNO`) USING BTREE,
  CONSTRAINT `emp_ibfk_1` FOREIGN KEY (`DEPTNO`) REFERENCES `dept` (`DEPTNO`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 8900 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of emp
-- ----------------------------
INSERT INTO `emp` VALUES (7369, '老张123', 'CLERK', 7902, '1980-12-30', 1200, 0, 20);
INSERT INTO `emp` VALUES (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1700, 1200, 30);
INSERT INTO `emp` VALUES (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);
INSERT INTO `emp` VALUES (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 3975, NULL, 20);
INSERT INTO `emp` VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);
INSERT INTO `emp` VALUES (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, NULL, 30);
INSERT INTO `emp` VALUES (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, NULL, 10);
INSERT INTO `emp` VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1987-07-13', 4000, NULL, 20);
INSERT INTO `emp` VALUES (7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10);
INSERT INTO `emp` VALUES (7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30);
INSERT INTO `emp` VALUES (7876, 'ADAMS', 'CLERK', 7788, '1987-07-13', 2100, NULL, 20);
INSERT INTO `emp` VALUES (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, NULL, 30);
INSERT INTO `emp` VALUES (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 4000, NULL, 20);
INSERT INTO `emp` VALUES (8896, '小明', 'MANAGER', 7698, '2023-01-02', 6666, 800, 10);
INSERT INTO `emp` VALUES (8897, '小红', 'SALESMAN', 7698, '2023-02-08', 5000, 1000, 10);
INSERT INTO `emp` VALUES (8898, 'zhang1', 'SALESMAN', 7698, '2023-01-31', 1243, 234, 10);
INSERT INTO `emp` VALUES (8900, '雄安', 'MANAGER', 7698, '2023-02-05', 13, 123, 10);

SET FOREIGN_KEY_CHECKS = 1;

1.2 准备好测试环境

import com.zlz.ShiroStart2;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest(classes = ShiroStart2.class,webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class DemoTest {

}

2 使用UpdateWrapper实现修改功能

2.1 题目内容

 //对用户名中含有z且(工资大于1000或者入职日期为2023-01-01)的用户信息进行修改,修改其津贴(comm)为888,并把部门编号改成20

2.2 对应的sql语句

 UPDATE emp SET comm=888,deptno=20 WHERE (ename LIKE '%z%' AND (sal > 1000 OR hiredate = '2023-01-01'))

2.3 示例代码

 //使用updateWrapper实现修改功能
    @Test
    public void a8(){
        //对用户名中含有z且(工资大于1000或者入职日期为2023-01-01)的用户信息进行修改,修改其津贴(comm)为888,并把部门编号改成20
        UpdateWrapper<Emp> updateWrapper= new UpdateWrapper<>();
        updateWrapper.like("ename",'z' )
                .and(i->i.gt("sal", 1000).or().eq("hiredate", "2023-01-01"));
        updateWrapper.set("comm", 888).set("deptno", "20");
        int update = empMapper.update(null, updateWrapper);
        System.out.println("受影响行数为: "+update);
    }

2.4 运行截图

2.4.1 实际执行的sql语句截图

在这里插入图片描述

2.4.2 数据显示截图

在这里插入图片描述

2.4.3 修改前数据库的数据

在这里插入图片描述

2.4.4 修改后数据库的数据

在这里插入图片描述

3 组装条件查询1(if判断的形式)

3.1 题目内容

  //模拟在用户点击查询时的,对应的搜索关键字的情况

3.2 对应的sql语句

SELECT EMPNO,ename,job,mgr,hiredate,sal,comm,deptno FROM emp WHERE (sal >= 1000 AND sal <= 2000)

3.3 示例代码

  @Test
    public void a9(){
        //模拟在用户点击查询时的,对应的搜索关键字的情况
        String ename="";
        Integer salStart=1000;
        Integer salEnd=2000;
        QueryWrapper<Emp> empQueryWrapper = new QueryWrapper<>();
        //StringUtils是com.baomidou.mybatisplus包下面的
        if(StringUtils.isNotBlank(ename)){
            //isNotBlank方法是判断某个字符串是否不为空字符串、不为null,不为空白符,若三种都不为,就返回true
            empQueryWrapper.like("ename",ename);
        }
        if (salStart != null) {
            empQueryWrapper.ge("sal", salStart);
        }
        if (salEnd != null) {
            empQueryWrapper.le("sal", salEnd);
        }
        List<Emp> emps = empMapper.selectList(empQueryWrapper);
        emps.forEach(System.out::println);
    }

3.4 运行截图

3.4.1 实际执行的sql语句截图

在这里插入图片描述

3.4.2 数据显示截图

在这里插入图片描述

4 组装条件查询2(使用condition)

4.1 题目内容

//模拟在用户点击查询时的,对应的搜索关键字的情况

4.2 对应的sql语句

 SELECT EMPNO,ename,job,mgr,hiredate,sal,comm,deptno FROM emp WHERE (sal >= 1000 AND sal <= 2000)

4.3 示例代码

 @Test
    public void a10(){
        //模拟在用户点击查询时的,对应的搜索关键字的情况
        String ename="";
        Integer salStart=1000;
        Integer salEnd=2000;
        QueryWrapper<Emp> empQueryWrapper = new QueryWrapper<>();
        //StringUtils是com.baomidou.mybatisplus包下面的
        //isNotBlank方法是判断某个字符串是否不为空字符串、不为null,不为空白符,若三种都不为,就返回true
        empQueryWrapper.like(StringUtils.isNotBlank(ename),"ename", ename);
        empQueryWrapper.ge(salStart != null,"sal", salStart);
        empQueryWrapper.le(salEnd != null,"sal", salEnd);
        List<Emp> emps = empMapper.selectList(empQueryWrapper);
        emps.forEach(System.out::println);
    }

4.4 运行截图

4.4.1 实际执行的sql语句截图

在这里插入图片描述

4.4.2 数据显示截图

在这里插入图片描述

5 使用LambdaQueryWrapper构造器

5.1 题目内容

 //模拟在用户点击查询时的,对应的搜索关键字的情况
//查询工资为1000-2000范围内的员工信息

5.2 对应的sql语句

SELECT EMPNO,ename,job,mgr,hiredate,sal,comm,deptno FROM emp WHERE (sal >= 1000 AND sal <= 2000)

5.3 示例代码

  //使用lambdaQuery查询对应的语句
    @Test
    public void a11(){
        //模拟在用户点击查询时的,对应的搜索关键字的情况
        //查询工资为1000-2000范围内的员工信息
        String ename="";
        Integer salStart=1000;
        Integer salEnd=2000;
        LambdaQueryWrapper<Emp> qw= new LambdaQueryWrapper<>();
        qw.like(StringUtils.isNotBlank(ename),Emp::getEname,ename)
                .ge(salStart!=null, Emp::getSal, salStart)
                .le(salEnd!=null, Emp::getSal, salEnd);
        List<Emp> emps = empMapper.selectList(qw);
        emps.forEach(System.out::println);
    }

5.4 运行截图

5.4.1 实际执行的sql语句截图

在这里插入图片描述

5.4.2 数据显示截图

在这里插入图片描述

6 使用LambdaUpdateWrapper构造器

6.1 题目内容

  //对用户名中含有z且(工资大于1000或者入职日期为2023-01-01)的用户信息进行修改,修改其津贴(comm)为1666,并把部门编号改成10

6.2 对应的sql语句

UPDATE emp SET comm=1600,deptno=10 WHERE (ename LIKE '%z%' AND (sal > 1000 OR hiredate = '2023-01-01'))

6.3 示例代码

  @Test
    public void a12(){
        //对用户名中含有z且(工资大于1000或者入职日期为2023-01-01)的用户信息进行修改,修改其津贴(comm)为1666,并把部门编号改成10
        LambdaUpdateWrapper<Emp> updateWrapper= new LambdaUpdateWrapper<>();
        updateWrapper.like(Emp::getEname,'z' )
                .and(i->i.gt(Emp::getSal, 1000).or().eq(Emp::getHiredate, "2023-01-01"));
        updateWrapper.set(Emp::getComm,1666).set(Emp::getDeptno, "10");
        int update = empMapper.update(null, updateWrapper);
        System.out.println("受影响行数为: "+update);
    }

6.4 运行截图

6.4.1 实际执行的sql语句截图

在这里插入图片描述

6.4.2 数据显示截图

在这里插入图片描述

6.4.3 修改前数据库的数据

在这里插入图片描述

6.4.4 修改后数据库的数据

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/369499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java原理4:java的io网络模型

文章目录1&#xff1a;基础概念1&#xff1a;同步和异步2&#xff1a;阻塞和非阻塞2.1&#xff1a;阻塞IO2.2&#xff1a;非阻塞io2.3&#xff1a;io复用3&#xff1a;同步/异步和阻塞/非阻塞3.1&#xff1a;同步非阻塞NIO4: redis为什么速度快Java 网络IO模型简介1&#xff1a…

VMware ESXi 8.0b - 领先的裸机 Hypervisor (Dell HPE Custom Image update)

本站发布 Dell 和 HPE 定制版 ESXi 8.0b 镜像 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-8/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org 产品简介 VMware ESXi&#xff1a;专门构建的裸机 Hyper…

HTB-Photobomb

HTB-Photobomb信息收集开机提权对于问题的思考信息收集 端口扫描 目标首页 有一个http Authorization 目录扫描 在查看源码的时候发现了一个js文件。 并且发现了访问不存在的目录会出现错误提示。 通过搜索得知 Sinatra 是一个基于 Ruby 语言的 DSL&#xff08;领域…

2. Dart 开发工具环境配置

很多编辑器都可以用来开发dart&#xff0c;所以大家可以选择自己喜欢的编辑器去进行开发。我还是比较喜欢vs code如果你不用vs code来开发dart的话&#xff0c;这篇文章可以直接跳过。如果想要在vs code里有dart的语法提示&#xff0c;我们需要安装相关的插件如图点开插件输入d…

MySQL高可用 集群(MHA)

1. MHA集群概述 集群的定义&#xff1a;多台服务器一起提供相同的服务&#xff0c;如&#xff08;web集群&#xff09;等。常见集群的分类&#xff1a; LB&#xff08;负载均衡集群&#xff09;&#xff1a;服务器共同平均分摊处理客户端的多次连接请求。 HA&#xff08;高可用…

python库streamlit学习笔记

什么是streamlit&#xff1f; Streamlit是一个免费的开源框架&#xff0c;用于快速构建和共享漂亮的机器学习和数据科学Web应用程序。它是一个基于Python的库&#xff0c;专为机器学习工程师设计。数据科学家或机器学习工程师不是网络开发人员&#xff0c;他们对花几周时间学习…

Python近红外光谱分析与机器学习、深度学习方法融合实践技术

、 第一n入门基础【理论讲解与案 1、Python环境搭建&#xff08; 下载、安装与版本选择&#xff09;。 2、如何选择Python编辑器&#xff1f;&#xff08;IDLE、Notepad、PyCharm、Jupyter…&#xff09; 3、Python基础&#xff08;数据类型和变量、字符串和编码、list和tu…

教你如何搭建培训机构-教务管理系统,demo可分享

1、简介 1.1、案例简介 本文将介绍&#xff0c;如何搭建培训机构-教务管理。 1.2、应用场景 可对排课、上课点名、课堂点评、作业发布进行管理。 2、设置方法 2.1、表单搭建 1&#xff09;新建表单【学员】&#xff0c;字段设置如下&#xff1a; 名称类型学员成员单选姓…

STM32—独立看门狗(IWDG)

什么是看门狗&#xff1f; 在由单片机构成的微型计算机系统中&#xff0c;由于单片机的工作常常会收到来自外界电磁场的干扰&#xff0c;造成程序跑飞&#xff0c;而陷入死循环&#xff0c;程序的正常运行被打断&#xff0c;由单片机控制的系统无法继续工作&#xff0c;会造成…

Python Unittest框架

1、unittest简介 unittest是Python自带的单元测试框架,具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件,主要适用于单元测试,可以用来作自动化测试框架的用例组织执行框架。 2、unittest框架的特性: 提供用例组织与执行:当测试用例只有几条的时候可以不考虑…

notepad++如何快速批量搜索复制,3步搜索+标记所在行+复制书签行

一。缘起 用习惯了 某edit, 突然用notepad很不习惯&#xff0c;至少3处不习惯&#xff1a;列操作&#xff0c;批量复制搜索行&#xff0c;和是txt文件比较。 另外一直坚持认为&#xff0c;不提供快捷键操作的软件不是好软件&#xff1a;&#xff09;当下屏幕对眼睛迫害至深的时…

【正点原子FPGA连载】第十七章双核AMP实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十七章双核AMP…

使用FVM管理Flutter SDK版本切换

window下配置fvm版本切换工具&#xff0c;管理flutter sdk版本的切换 一、配置flutter dart环境 使用前需要先配置flutter dart环境&#xff0c;才能下载jvm 已经配置好环境的&#xff0c;在命令框中输入dart --version验证是否安装成功 C:\Users\topqizhi>dart --versi…

前端导出表格 修改样式(xlsx-style)用法

一. 应用机制 xlsx-style 修改样式的机制 就是选中哪一行&#xff0c;那一列或者哪一个 然后去修改 比如表格最左上角的一个格子 坐标是&#xff08;0&#xff0c; 0&#xff09;下标 也可以叫做 A1 选中之后 可以修改其样式 二. 实战讲解 1. 下载依赖 npm install xls…

了解Python语言和版本

1.1 任务1了解Python语言和版本 Python 语言的名字来自于一个著名的电视剧"Monty Pythons Flying Cireus",Python之父 Guido van Rossum是这部电视剧的狂热爱好者&#xff0c;所以把他设计的语言命名为Python。 Python 是一门跨平台、开源、免费的解释型高级动态编…

2023年,尽量还是别裸辞了吧···

你知道什么叫 度日如年 吗&#xff1f;就是在家待业的每一天。你知道什么叫心焦如焚吗&#xff1f;就是投出100份简历却等不来一个回应。 当前就业环境&#xff0c;裁员、失业消息满天飞&#xff0c;好像能有一份工作就不错了&#xff0c;更别说高薪。其实这只是一方面。另一方…

电商平台商品详情接口的应用场景

API接口的定义价格、库存量、发货地点等。此外&#xff0c;它还可以提供商品的详细信息&#xff0c;包括商品的图片、详细描述、规格参数、售后服务等。这些信息可以帮助用户更好地了解商品&#xff0c;从而更好地选择商品。其次&#xff0c;电商平台商品详情接口的实现原理是基…

关于Qt程序打包后运行库依赖的常见问题分析及解决方法

目录 一. 大致如下常见问题&#xff1a; &#xff08;1&#xff09;找不到程序所依赖的Qt库 version Qt_5 not found (required by &#xff08;2&#xff09;Could not Load the Qt platform plugin "xcb" in "" even though it was found &#xff0…

Antd Select 设置偏移量

对于Select 组件我要想实现如下效果&#xff0c;该如何处理呢&#xff1f;我们查看你select组件https://ant.design/components/select-cn#select-props 并没有相关的属性API,如何去处理这个呢&#xff1f;添加 dropdownAlign{{ offset: [0, 30] }} 这个属性&#xff0c;可以设…

在Linux中进行rocketmq及rocketmq控制台安装与配置

rocketmq下载安装的版本&#xff1a;rocketmq-rocketmq-all-5.0.0.tar.gz rocketmq控制台下载安装的版本&#xff1a;rocketmq-externals-rocketmq-console-1.0.0.tar.gz rocketmq安装 第一步&#xff0c;下载server-jre-8u202-linux-x64.tar.gz安装包。 登录网址&#xff…