MyBatisPlus QueryWrapper多条件查询及修改方法是什么

gt、ge、lt、le、isNull、isNotNull

大于 >

例: gt(“age”, 18) → age > 18

ge 大于等于 >=

例: ge(“age”, 18) → age >= 18

lt 小于 <

例: lt(“age”, 18) &rarr; age < 18

le 小于等于 <=

例: le(“age”, 18) &rarr; age <= 18

isNUll 字段 IS NULL

例: isNull(“name”) &rarr; name is null

isNotNull 字段 IS NOT NULL

例: isNotNull(“name”) &rarr; name is not null

@Testpublic void queryWrapperOne() {    QueryWrapper<User> queryWrapper = new QueryWrapper<>();    queryWrapper.            isNull("name")            .ge("age", 23)            .isNotNull("email");    // 逻辑删除    int result = userMapper.delete(queryWrapper);    System.out.println(result);    // 最终的语句为:UPDATE user SET deleted=1 WHERE deleted=0 AND name IS NULL AND age >= ? AND email IS NOT NULL}

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

eq、ne

eq 等于 =

例: eq(“name”, “老王”) &rarr; name = ‘老王’

ne 不等于 <>

例: ne(“name”, “老王”) &rarr; name <> ‘老王’

@Testpublic void queryWrapperTwo() {    QueryWrapper<User> queryWrapper = new QueryWrapper<>();    queryWrapper.eq("name", "BNTang");    // selectOne:返回的是一条记录,当出现多条时会报错    User user = userMapper.selectOne(queryWrapper);    System.out.println(user);}

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

between、notBetween

BETWEEN 值1 AND 值2

例: between(“age”, 18, 30) &rarr; age between 18 and 30

NOT BETWEEN 值1 AND 值2

例: notBetween(“age”, 18, 30) &rarr; age not between 18 and 30

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

allEq

allEq 全部 eq(或个别 isNull)

个别参数说明:

params: key 为数据库字段名, value 为字段值

如果想表示 null isNull,则在 value 取值的时候传入一个 null, 为 null 时调用 isNull 方法, 为false时则忽略value为null的,也就是不拼接 value 为 null 的查询条件字段

例1: allEq({id:1,name:”老王”,age:null})&rarr;id = 1 and name = ‘老王’ and age is null

例2: allEq({id:1,name:”老王”,age:null}, false)&rarr;id = 1 and name = ‘老王’

@Testpublic void queryWrapperFour() {    QueryWrapper<User> queryWrapper = new QueryWrapper<>();    Map<String, Object> queryParamsMap = new HashMap<>();    queryParamsMap.put("id", 1373266771933462530L);    queryParamsMap.put("name", "BNTang");    queryParamsMap.put("age", 23);    queryWrapper.allEq(queryParamsMap);    List<User> users = userMapper.selectList(queryWrapper);    users.forEach(System.out::println);}

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

个别参数说明

filter: 过滤函数, 是否允许字段传入比对条件中

params 与 null、IsNull 同上

例1: allEq((k,v) -> k.indexOf(“a”) >= 0, {id:1,name:”老王”,age:null})&rarr;name = ‘老王’ and age is null

例2: allEq((k,v) -> k.indexOf(“a”) >= 0, {id:1,name:”老王”,age:null}, false)&rarr;name = ‘老王’

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

如上图可看到,只添加了一个 id 查询的条件因为我写的过滤条件为要包含 i 这个字符串,所以只有名列前茅个 key, value 包含了所以就只添加了 id

like、notLike、likeLeft、likeRight

LIKE ‘%值%’

例: like(“name”, “王”)&rarr;name like ‘%王%’

NOT LIKE ‘%值%’

例: notLike(“name”, “王”)&rarr;name not like ‘%王%’

LIKE ‘%值’

例: likeLeft(“name”, “王”)&rarr;name like ‘%王’

LIKE ‘值%’

例: likeRight(“name”, “王”)&rarr;name like ‘王%’

@Testpublic void queryWrapperFive() {    QueryWrapper<User> queryWrapper = new QueryWrapper<>();    queryWrapper            .notLike("name", "BNTang")            .likeRight("email", "zq");    // 返回值是Map列表    List<Map<String, Object>> users = userMapper.selectMaps(queryWrapper);    users.forEach(System.out::println);}

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

in、notIn、inSql、notinSql、exists、notExists

字段 IN (value.get(0), value.get(1), …)

例: in(“age”,{1,2,3})&rarr;age in (1,2,3)

字段 NOT IN (value.get(0), value.get(1), …)

例: notIn(“age”,{1,2,3})&rarr;age not in (1,2,3)

字段 IN ( sql语句 )

例: inSql(“age”, “1,2,3,4,5,6”)&rarr;age in (1,2,3,4,5,6)

例: inSql(“id”, “select id from table where id < 3”)&rarr;id in (select id from table where id < 3)

字段 NOT IN ( sql语句 )

例: notInSql(“age”, “1,2,3,4,5,6”)&rarr;age not in (1,2,3,4,5,6)

例: notInSql(“id”, “select id from table where id < 3”)&rarr;id not in (select id from table where id < 3)

拼接 EXISTS ( sql语句 )

例: exists(“select id from table where age = 1”)&rarr;exists (select id from table where age = 1)

拼接 NOT EXISTS ( sql语句 )

例: notExists(“select id from table where age = 1”)&rarr;not exists (select id from table where age = 1)

@Testpublic void queryWrapperSix() {   QueryWrapper<User> queryWrapper = new QueryWrapper<>();    queryWrapper.in("id", 1, 2, 3);    queryWrapper.inSql("id", "select id from user where id < 3");    // 返回值是Object列表    List<Object> users = userMapper.selectObjs(queryWrapper);    users.forEach(System.out::println);}

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

or、and

拼接 OR

注意事项:

主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)

例: eq(“id”,1).or().eq(“name”,”老王”)&rarr;id = 1 or name = ‘老王’

OR 嵌套

例: or(i -> i.eq(“name”, “李白”).ne(“status”, “活着”))&rarr;or (name = ‘李白’ and status <> ‘活着’)

AND 嵌套

例: and(i -> i.eq(“name”, “李白”).ne(“status”, “活着”))&rarr;and (name = ‘李白’ and status <> ‘活着’)

@Testpublic void queryWrapperSeven() {    // 修改值    User user = new User();    user.setAge(99);    user.setName("BNTang6666");    // 修改条件    UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();    userUpdateWrapper            .like("name", "BNTang")            .or()            .between("age", 20, 30);    int result = userMapper.update(user, userUpdateWrapper);    System.out.println(result);}

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

嵌套 or、嵌套 and

@Testpublic void queryWrapperEight() {    // 修改值    User user = new User();    user.setAge(99);    user.setName("BNTang6666");    // 修改条件    UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();    userUpdateWrapper            .like("name", "A")            .or(i -> i.eq("name", "BNTang6666").ne("age", 20));    int result = userMapper.update(user, userUpdateWrapper);    System.out.println(result);}

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

orderBy、orderByDesc、orderByAsc

排序:ORDER BY 字段, …

例: orderBy(true, true, “id”, “name”)&rarr;order by id ASC,name ASC

排序:ORDER BY 字段, … DESC

例: orderByDesc(“id”, “name”)&rarr;order by id DESC, name DESC

排序:ORDER BY 字段, … ASC

例: orderByAsc(“id”, “name”)&rarr;order by id ASC,name ASC

@Testpublic void queryWrapperNine() {    QueryWrapper<User> queryWrapper = new QueryWrapper<>();    queryWrapper.orderByDesc("id");    List<User> users = userMapper.selectList(queryWrapper);    users.forEach(System.out::println);}

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

last

无视优化规则直接拼接到 sql 的最后

注意事项:

只能调用一次, 多次调用以最后一次为准有 sql 注入的风险, 请谨慎使用

例: last(“limit 1”)

@Testpublic void queryWrapperTen() {    QueryWrapper<User> queryWrapper = new QueryWrapper<>();    queryWrapper.last("limit 1");    List<User> users = userMapper.selectList(queryWrapper);    users.forEach(System.out::println);}

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

指定要查询的列

@Testpublic void queryWrapperEleven() {    QueryWrapper<User> queryWrapper = new QueryWrapper<>();    queryWrapper.select("id", "name", "age");        List<User> users = userMapper.selectList(queryWrapper);    users.forEach(System.out::println);}

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

set、setSql

SQL SET 字段

例: set(“name”, “老李头”)

例: set(“name”, “”)&rarr;数据库字段值变为空字符串

例: set(“name”, null)&rarr;据库字段值变为null

设置 SET 部分 SQL

例: setSql(“name = ‘老李头'”)

@Testpublic void queryWrapperTwelve() {    // 修改值    User user = new User();    user.setAge(10);    // 修改条件    UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();    userUpdateWrapper            .like("name", "A")            // 除了可以查询还可以使用set设置修改的字段            .set("name", "BNTang")            // 可以有子查询            .setSql(" email = '303158131@qq.com'");    int result = userMapper.update(user, userUpdateWrapper);    System.out.println(result);}

MyBatisPlus QueryWrapper多条件查询及修改方法是什么

以上就是关于“MyBatisPlus QueryWrapper多条件查询及修改方法是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

文章标题:MyBatisPlus QueryWrapper多条件查询及修改方法是什么,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/28274

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月21日 下午10:52
下一篇 2022年9月21日 下午10:53

相关推荐

  • HTML5导航标签指的是什么

    在HTML5中,nav标签是导航标签;nav的全称是navigation,意为导航,该标签定义导航链接的部分,用于表示HTML页面中的导航,该标签并不是所有的HTML文档都要使用,只是作为标注一个导航链接的区域。 本教程操作环境:windows10系统、HTML5版本、Dell G3电脑。 HTML…

    2022年8月31日
    64500
  • windows trustedinstaller.exe占用内存如何解决

    名列前茅种解决方法:硬件上解决 在硬件上解决,增加内存条,如2G内存升级到4G或者8G等容量。一般提示内存不足,在非病毒或者木马的情况下说明你的电脑硬件不足,在资金充足的情况下可以新增内存条。 第二种解决方法:等系统更新完成(在空闲时更新) 在不想投入硬件的情况下,我们又想更新完成,怎么办呢?只有等…

    2022年9月2日
    49200
  • 升级服务器什么意思

    升级服务器通常意味着1、提高硬件性能、2、更新软件和操作系统、3、扩展存储容量、4、增强安全功能。提高硬件性能包括增加处理器的核心数、频率或升级到更高效的型号,以便应对增长的数据处理需求。此外,增加内存可以显著提升多任务处理和大型应用程序的运行效率。提升内存通常是应对性能瓶颈的首要解决方案,因为它直…

    2024年4月23日
    600
  • 多项目管理方法有哪些

    多项目管理方法主要有:1.阶段化管理;2.量化管理;3.优化管理这三个方面。项目管理方法是关于如何进行项目管理的方法,是可在大部分项目中应用的方法。 一、阶段管理 阶段化管理指的是从立项之初直到系统运行维护的全过程。根据工程项目的特点,我们可将项目管理分为若干个小的阶段。 市场信息 1)市场信息方面…

    2022年3月25日
    1.1K00
  • 如何进行Apache HTTP组件提权漏洞利用过程深度分析

    Apache HTTP 被发现存在本地提权漏洞(CVE-2019-0211),漏洞作者在名列前茅时间就给出了WriteUp和漏洞EXP,阿尔法实验室也对EXP进行了深入分析,在此将分析的笔记整理分享出来,希望对大家理解该漏洞有所帮助。下面内容主要按着EXP的执行步骤一步步讲解,同时详细解释了利用过程…

    2022年9月15日
    81200
  • word字体放大如何居中

    word字体放大居中的方法 1、首先打开word,选中你要放大居中的文字, 点击开始菜单栏的字号,这里选择的最大字号是72号。 2、这时可以直接在字号框里输入数字,数字越大字越大。 3、选择菜单栏“布局”–“纸张方向”–“横向”,来调整页面方向。 4、在菜单栏点击“布局”–…

    2022年9月15日
    1.4K00
  • mdf文件如何开启

    mdf文件打开方法: 1、下载一个SQLServer管理工具。 2、下载好开始安装。 3、完成后点击“导入连接”。 4、找到需要打开的mdf文件点击“打开”即可。 5、打开列表即可看到mdf文件。 到此,相信大家对“mdf文件如何开启”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关…

    2022年9月8日
    64300
  • node服务CPU过高如何解决

    帮同事看一个CPU过高的问题 CPU涨了后掉不下去,最终同事排查出来是 某个依赖升级大版本后下线了默认的公共 redis 配置,(项目较老,很久没人动过)但需要业务方代码里自己配置关闭 redis服务。业务方有信息gap,所以不知道要关闭redis,导致上线后,一直在重试连接redis(多一个请求就…

    2022年9月16日
    2.0K00
  • 如何用rank函数排名

    用rank函数排名的方法: 1、首先进入空白单元格,然后输入:=RANK( )来进行排名。 2、然后去点击E2单元格,即可获得rank的名列前茅个参数,然后输入逗号。 3、之后就可以去框选所有的数据,并且去获取函数的第二个参数。 4、然后按下F4,即可对rank函数的第二个参数做绝对引用。 5、按下…

    2022年8月30日
    84200
  • MySQL之InnoDB中锁的情况分析

    mysql> select @@version;+———–+| @@version |+———–+| 5.7.21 |+———–+1 row in set (0.01 sec) 一,锁的基本介绍 相对其他数据库而言,MySQL的锁机制比较简单,其最显著…

    2022年9月15日
    59400
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部