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

Mybatis-Plus -04 条件构造器与代码生成器

Mybatis-Plus--条件构造器与代码生成器

  • 1 条件构造器
    • 1.1 > < =
    • 1.2 in notin
    • 1.3 between...
    • 1.4 orderBy...
    • 1.5 like...
  • 2 代码生成器
    • 2.1 引入依赖
    • 2.2 生成器代码

1 条件构造器

通过条件构造器可以更加轻松的完成条件查询与更新(底层就是动态SQL)

1.1 > < =

  1. ge 小于 <
    • 例: lt("age", 18)—>age < 18
  2. gt 大于 >
    • 例: gt("age", 18)—>age > 18
  3. eq 等于 =
    • 例: eq("name", "老王")—>name = '老王'
@Test
public void test1(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//查询年龄大于24岁用户,姓名为tomqueryWrapper.ge("age",24).eq("name","tom");List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);
}

1.2 in notin

  1. in

    in(R column, Collection<?> value)
    in(boolean condition, R column, Collection<?> value)
    
    • 字段 IN (value.get(0), value.get(1), …)
      • 例: in("age",{1,2,3})—>age in (1,2,3)
    in(R column, Object... values)
    in(boolean condition, R column, Object... values)
    
    • 字段 IN (v0, v1, …)
      • 例: in("age", 1, 2, 3)—>age in (1,2,3)
  2. notIn

    otIn(R column, Collection<?> value)
    notIn(boolean condition, R column, Collection<?> value)
    
    • 字段 NOT IN (value.get(0), value.get(1), …)
      • 例: notIn("age",{1,2,3})—>age not in (1,2,3)
    notIn(R column, Object... values)
    notIn(boolean condition, R column, Object... values)
    
    • 字段 NOT IN (v0, v1, …)
      • 例: notIn("age", 1, 2, 3)—>age not in (1,2,3)
@Test
public void test2(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//查询id为1,3,5queryWrapper.in("id",1,3,5);List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);
}

1.3 between…

  1. between

    between(R column, Object val1, Object val2)
    between(boolean condition, R column, Object val1, Object val2)
    
    • BETWEEN 值1 AND 值2
      • 例: between("age", 18, 30)—>age between 18 and 30
  2. notBetween

    notBetween(R column, Object val1, Object val2)
    notBetween(boolean condition, R column, Object val1, Object val2)
    
    • NOT BETWEEN 值1 AND 值2
      • 例: notBetween("age", 18, 30)—>age not between 18 and 30
@Test
public void test3(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//查询年龄在20~28之间queryWrapper.between("age",20,28);List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);
}

1.4 orderBy…

  1. orderByAsc

    orderByAsc(R... columns)
    orderByAsc(boolean condition, R... columns)
    
    • 排序:ORDER BY 字段, … ASC
      • 例: orderByAsc("id", "name")—>order by id ASC,name ASC
  2. orderByDesc

    orderByDesc(R... columns)
    orderByDesc(boolean condition, R... columns)
    
    • 排序:ORDER BY 字段, … DESC
      • 例: orderByDesc("id", "name")—>order by id DESC,name DESC
  3. orderBy

    orderBy(boolean condition, boolean isAsc, R... columns)
    
    • 排序:ORDER BY 字段, …
    • 例: orderBy(true, true, "id", "name")—>order by id ASC,name ASC
@Test
public void test4(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//查询按照年龄降序,如果年龄相等按照姓名降序queryWrapper.orderByDesc("age","name");List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);
}
@Test
public void test5(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//查询姓名中包含%S%//queryWrapper.like("name","s");//查询姓名中包含%S//queryWrapper.likeLeft("name","s");//查询姓名中包含S%queryWrapper.likeRight("name","s");List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);
}

1.5 like…

  1. like

    like(R column, Object val)
    like(boolean condition, R column, Object val)
    
    • LIKE ‘%值%’
      • 例: like("name", "王")—>name like '%王%'
  2. notLike

    notLike(R column, Object val)
    notLike(boolean condition, R column, Object val)
    
    • NOT LIKE ‘%值%’
      • 例: notLike("name", "王")—>name not like '%王%'
  3. likeLeft

    likeLeft(R column, Object val)
    likeLeft(boolean condition, R column, Object val)
    
    • LIKE ‘%值’
      • 例: likeLeft("name", "王")—>name like '%王'
  4. likeRight

    likeRight(R column, Object val)
    likeRight(boolean condition, R column, Object val)
    
    • LIKE ‘值%’
      • 例: likeRight("name", "王")—>name like '王%'
  5. notLikeLeft

    notLikeLeft(R column, Object val)
    notLikeLeft(boolean condition, R column, Object val)
    
    • NOT LIKE ‘%值’
      • 例: notLikeLeft("name", "王")—>name not like '%王'
  6. notLikeRight

    notLikeRight(R column, Object val)
    notLikeRight(boolean condition, R column, Object val)
    
    • NOT LIKE ‘值%’
      • 例: notLikeRight("name", "王")—>name not like '王%'
  7. isNull

    isNull(R column)
    isNull(boolean condition, R column)
    
    • 字段 IS NULL
      • 例: isNull("name")—>name is null
  8. isNotNull

    isNotNull(R column)
    isNotNull(boolean condition, R column)
    
    • 字段 IS NOT NULL
      • 例: isNotNull("name")—>name is not null
@Test
public void test6(){UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();//修改姓名中不包含s的用户updateWrapper.notLike("name","s");User user = new User();user.setName("尼古拉斯");userMapper.update(user,updateWrapper);
}

2 代码生成器

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

2.1 引入依赖

  • 代码生成器依赖
  • 模板引擎 依赖
  • 日志依赖
<!--  代码生成器依赖  -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version>
</dependency>
<!--  模板引擎 依赖  -->
<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version>
</dependency>
<!--   日志依赖     -->
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version>
</dependency>

2.2 生成器代码

  1. 代码生成器相关诶之
  2. 数据源配置
  3. 包配置
  4. 策略配置
  5. 其他配置
public class CodeGenerator {public static void main(String[] args) {// 代码生成器AutoGenerator mpg = new AutoGenerator();// 全局配置GlobalConfig gc = new GlobalConfig();//获取当前路径String projectPath = System.getProperty("user.dir");//设置生成代码位置gc.setOutputDir(projectPath + "/src/main/java");//设置代码文件头作者gc.setAuthor("ying");//设置是否在资源管理器打开gc.setOpen(false);//设置生成代码是否覆盖gc.setFileOverride(true);//设置去除生成代码接口中的Igc.setServiceName("%sService");mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql:///java11");dsc.setDriverName("com.mysql.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");mpg.setDataSource(dsc);// 包配置PackageConfig pc = new PackageConfig();//设置模块名称//pc.setModuleName("shopping");pc.setParent("com.ying");pc.setEntity("pojo");pc.setMapper("mapper");pc.setService("service");pc.setController("controller");mpg.setPackageInfo(pc);// 策略配置StrategyConfig strategy = new StrategyConfig();//表名  下划线转驼峰strategy.setNaming(NamingStrategy.underline_to_camel);//字段名  下划线转驼峰strategy.setColumnNaming(NamingStrategy.underline_to_camel);//实体类是否使用lombokstrategy.setEntityLombokModel(true);//Controller是否使用RESTful风格(RestController)strategy.setRestControllerStyle(true);//设置逻辑删除字段(数据库中需要有deleted字段)strategy.setLogicDeleteFieldName("deleted");//设置乐观锁注解(数据库中需要有version字段)strategy.setVersionFieldName("version");//设置生成的表名strategy.setInclude("user");mpg.setStrategy(strategy);mpg.execute();}
}

相关文章:

Mybatis-Plus -04 条件构造器与代码生成器

Mybatis-Plus--条件构造器与代码生成器 1 条件构造器1.1 > < 1.2 in notin1.3 between...1.4 orderBy...1.5 like... 2 代码生成器2.1 引入依赖2.2 生成器代码 1 条件构造器 通过条件构造器可以更加轻松的完成条件查询与更新(底层就是动态SQL) 1.1 > < ge 小于 &l…...

MapReduce高级篇——全局计数器

MapReduce Counter 计数器 概念 在执行MapReduce程序的时候&#xff0c;控制台输出日志中通常下面片段&#xff0c;可以发现输出信息中的核心词是counter,中文叫做计数器 在执行MapReduce城西过程中&#xff0c;许多时候&#xff0c;用户希望了解程序的运行情况&#xff0c;H…...

轻松掌握K8S目录持久卷PV/PVC的kubectl操作知识点04

1、介绍 在docker中可以将容器中的目录挂载出来&#xff0c;在k8s中pod可以部署在不同节点&#xff0c;假如该节点的机器宕机了&#xff0c;k8s可能就会将此Pod转移到其他机器&#xff0c;就不是原先的机器了。k8s有自己的一套挂载方案&#xff0c;如下图所示&#xff0c; 原…...

Appuploader证书申请教程

转载&#xff1a;IOS证书制作教程 点击苹果证书 按钮 点击新增 输入证书密码&#xff0c;名称 这个密码不是账号密码&#xff0c;而是一个保护证书的密码&#xff0c;是p12文件的密码&#xff0c;此密码设置后没有其他地方可以找到&#xff0c;忘记了只能删除证书重新制作&…...

acwing17给了一个头节点,从尾到头输出链表的元素,顺便练练容器

方法一 建立一个数组&#xff0c;从头到尾遍历一遍链表&#xff0c;然后将链表的每个元素的值赋给数组 犯了一个错误 新建的vector容器是一个可变长的数组&#xff0c;要想像数组下标那样访问前提是这个下标所指向的元素得存在&#xff0c;这也就跟那个声明一维数组得写出长度来…...

Linux 性能优化大全!

性能指标 高并发和响应快对应着性能优化的两个核心指标&#xff1a;吞吐和延时 应用负载角度&#xff1a;直接影响了产品终端的用户体验 系统资源角度&#xff1a;资源使用率、饱和度等 性能问题的本质就是系统资源已经到达瓶颈&#xff0c;但请求的处理还不够快&#xff0…...

精通 TensorFlow 2.x 计算机视觉:第一部分

原文&#xff1a;Mastering Computer Vision with TensorFlow 2.x 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;…...

mulesoft MCIA 常用词汇、知识点汇总

mandate 授权 carry out 执行 subscriptions 订阅 stakeholders 利益相关者 periodically 定期地 Idempotent 幂等的 on-premises 本地 mutual 相互 two-way 双向的 arbitrary 任意的 mandatory 强制性的 round-robin 循环 replicate 复制 compensating actions 补…...

Python 单样本学习实用指南:1~6 全

原文&#xff1a;Hands-On One-shot Learning with Python 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只关心如…...

心血管疾病数据探索分析

心血管疾病数据探索分析 初步数据分析 首先,导入挑战所需模块: import pandas as pd import numpy as np import seaborn as sns import matplotlib import matplotlib.pyplot as plt import matplotlib.ticker from matplotlib import rcParams import warnings warnings…...

Pandas的应用-1

Pandas是一个开源的数据分析工具&#xff0c;它提供了高性能、易于使用的数据结构和数据分析工具。其中&#xff0c;Series是Pandas中最基本的数据结构之一&#xff0c;它是一种类似于一维数组的对象&#xff0c;可以储存任何数据类型。在本文中&#xff0c;我们将介绍Series的…...

【状态估计】电力系统状态估计的虚假数据注入攻击建模与对策(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

【Spring】Spring @Import注解的使用和源码分析

文章目录 介绍Import导入bean的三种方式普通类ImportSelector接口ImportBeanDefinitionRegistrar接口 源码解析总结 介绍 今天主要介绍Spring Import注解&#xff0c;在Spring中Import使用得比较频繁&#xff0c;它得作用是导入bean&#xff0c;具体的导入方式有多种&#xff…...

C++中的类与对象

类与对象 我们在C语言中自定义的struct 叫做结构体&#xff0c;而在C中我们把struct升级为了类&#xff0c;并且还加入了一个class&#xff0c;也称为类&#xff0c;那么我们今天就来看一下结构体和类的不同和相同 1.结构体与类 我们在C语言中的结构体是struct&#xff0c;而…...

探索Qt图像处理的奥秘:从入门到精通

探索Qt图像处理的奥秘&#xff1a;从入门到精通&#xff08;Exploring the Secrets of Qt Image Processing: From Beginner to Expert&#xff09; 引言&#xff1a;Qt图像处理的概述和应用&#xff08;Introduction: Overview and Applications of Qt Image Processing&#…...

springboot+vue企业人事人力资源管理系统java公司员工出差考勤办公OA系统

“简易云”是这个系统的名字 &#xff08;6&#xff09;系统管理&#xff1a;主要下拉分为角色管理、菜单管理&#xff1b; 角色管理&#xff1a;此页面可对角色进行增删改查操作&#xff0c;可修改不同角色的权限&#xff1b; 菜单管理&#xff1a;此页面可配置系统可展示的菜…...

设计模式-模板模式在Java中的使用示例

场景 模板模式 模板模式又叫模板方法模式(Template Method Pattern),是指定义一个算法的骨架&#xff0c;并允许子类为一个 或者多个步骤提供实现。 模板模式使得子类可以在不改变算法结构的情况下&#xff0c;重新定义算法的某些步骤&#xff0c;属于行为型设计模式。 模…...

回溯算法及其应用

回溯是一种常见的算法思想&#xff0c;用于解决许多优化问题。该算法的核心思想是穷举所有可能的解决方案&#xff0c;然后通过剪枝来减少不必要的计算&#xff0c;以获得最优解。 回溯算法常用于求解组合、排列、子集和等问题。通常情况下&#xff0c;回溯算法需要递归地搜索…...

如何一步步打造完美的成绩查询系统平台?

想要搭建一个高效的在线发布成绩查询系统平台&#xff0c;首先需要了解哪些技术和工具是必备的。本文将为您介绍一些主流的技术和工具&#xff0c;帮助您快速搭建一个稳定、安全、易用的成绩查询系统。 想要制作在线成绩查询系统平台有两种方式&#xff0c;第一种是直接使用易…...

P1026 [NOIP2001 提高组] 统计单词个数

题目描述 给出一个长度不超过 200200 的由小写英文字母组成的字母串&#xff08;该字串以每行 2020 个字母的方式输入&#xff0c;且保证每行一定为 2020 个&#xff09;。要求将此字母串分成 &#xfffd;k 份&#xff0c;且每份中包含的单词个数加起来总数最大。 每份中包含…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix&#xff0c;按照"之"字形的方式打印这个矩阵&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为&#xff1a;1&#xff0c;…...