MyBatisPlus QueryWrapper多条件查询及修改方法是什么(mybatisplus,querywrapper,开发技术)

时间:2024-05-02 18:35:29 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

这篇“MyBatisPlus QueryWrapper多条件查询及修改方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“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

@TestpublicvoidqueryWrapperOne(){QueryWrapper<User>queryWrapper=newQueryWrapper<>();queryWrapper.isNull("name").ge("age",23).isNotNull("email");//逻辑删除intresult=userMapper.delete(queryWrapper);System.out.println(result);//最终的语句为:UPDATEuserSETdeleted=1WHEREdeleted=0ANDnameISNULLANDage>=?ANDemailISNOTNULL}

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

eq、ne

eq 等于 =

例: eq("name", "老王") &rarr; name = '老王'

ne 不等于 <>

例: ne("name", "老王") &rarr; name <> '老王'

@TestpublicvoidqueryWrapperTwo(){QueryWrapper<User>queryWrapper=newQueryWrapper<>();queryWrapper.eq("name","BNTang");//selectOne:返回的是一条记录,当出现多条时会报错Useruser=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 = '老王'

@TestpublicvoidqueryWrapperFour(){QueryWrapper<User>queryWrapper=newQueryWrapper<>();Map<String,Object>queryParamsMap=newHashMap<>();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 '王%'

@TestpublicvoidqueryWrapperFive(){QueryWrapper<User>queryWrapper=newQueryWrapper<>();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)

@TestpublicvoidqueryWrapperSix(){QueryWrapper<User>queryWrapper=newQueryWrapper<>();queryWrapper.in("id",1,2,3);queryWrapper.inSql("id","selectidfromuserwhereid<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 <> '活着')

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

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

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

嵌套 or、嵌套 and

@TestpublicvoidqueryWrapperEight(){//修改值Useruser=newUser();user.setAge(99);user.setName("BNTang6666");//修改条件UpdateWrapper<User>userUpdateWrapper=newUpdateWrapper<>();userUpdateWrapper.like("name","A").or(i->i.eq("name","BNTang6666").ne("age",20));intresult=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

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

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

last

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

注意事项:

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

例: last("limit 1")

@TestpublicvoidqueryWrapperTen(){QueryWrapper<User>queryWrapper=newQueryWrapper<>();queryWrapper.last("limit1");List<User>users=userMapper.selectList(queryWrapper);users.forEach(System.out::println);}

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

指定要查询的列

@TestpublicvoidqueryWrapperEleven(){QueryWrapper<User>queryWrapper=newQueryWrapper<>();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 = '老李头'")

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

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

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

本文:MyBatisPlus QueryWrapper多条件查询及修改方法是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Vue3中toRef和toRefs函数怎么使用下一篇:

9 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18