软件编程
位置:首页>> 软件编程>> java编程>> mybatisPlus条件构造器常用方法小结

mybatisPlus条件构造器常用方法小结

作者:Wmenghu  发布时间:2023-12-16 07:04:09 

标签:mybatisPlus,条件,构造器

首先是.select

在MP查询中,默认查询所有的字段,如果有需要也可以通过select方法进行指定字段。其中要注意的细节:

wrapper.select("pname")
       .eq("pname","张三")
       .or().eq("price",300);
List<User> userList = userDao.selectList(wrapper);

使用select进行sql语句拼接时,不会识别在实体类中属性对应的操作:

SELECT pname FROM USER WHERE (pname = ? or price =? )

当数据库表中的字段名,与实体类对象的属性名不一致时

wrapper.select("pname as name")
       .eq("pname","张三")
       .or().eq("price",300);
List<User> userList = userDao.selectList(wrapper);

这样拼接出来的sql语句:

SELECT pname as name FROM user WHERE (pname = ? OR price = ? )

其他条件 

函数名说明例子
eq等于 =例:eq(&ldquo;name&rdquo;,&ldquo;张三&rdquo;) :name = &lsquo;张三&rsquo;
ne不等于<>例: eq(&ldquo;name&rdquo;,&ldquo;老王&rdquo;) &mdash;> name <> &lsquo;老王&rsquo;
gt大于>例:gt(&ldquo;age&rdquo;,18) &mdash;> age > 18
ge大于等于>=例:ge(&ldquo;age&rdquo;,18) &mdash;> age >= 18
lt小于<例:lt(&ldquo;age&rdquo;,18) &mdash;> age < 18
le小于<=例:le(&ldquo;age&rdquo;,18) &mdash;> age <= 18
betweenBETWEEN值1 AND值2例:between(&ldquo;age&rdquo;,18,30) &mdash;> age between 18 and 30
notBetweenNOT BETWEEN值1 AND值2例: notBetween(&ldquo;age&rdquo;,18,30) &mdash;> age not between 18 and 30
likeLIKE &lsquo;%值%&rsquo;例: like(&ldquo;name&rdquo;,&ldquo;王&rdquo;) &mdash;&ndash;> name like '%王%&rsquo;
notLikeNOT LIKE &lsquo;%值%&rsquo;例: notLike (&ldquo;name&rdquo;,&ldquo;王&rdquo;) &mdash;> name not like '%王%&rsquo;
likeLeftLIKE '%值&rsquo;例:likeLeft (&ldquo;name&rdquo;,&ldquo;王&rdquo;) &mdash;&ndash;> name like '%王&rsquo;
likeRightLIKE&rsquo;值%&rsquo;例: likeRight(&ldquo;name&rdquo;,&ldquo;王&rdquo;) &mdash;> name like &lsquo;王%&rsquo;
isNull字段IS NULL例: isNul1 (&ldquo;name&rdquo;) &mdash;> name is null
isNotNull字段IS NOT NULL例: isNotNull(&ldquo;name&rdquo;) &mdash;> name is not null
in字段IN (v0, v1,&hellip;)例: in(&ldquo;age&rdquo;,{1,2,3} ) &mdash;&ndash;> age in (1,2,3)
notIn字段NOT IN (v0, v1,&hellip;)例: notIn(&ldquo;age&rdquo;,1,2,3) &mdash;> age not in (1,2,3)
inSql字段IN ( sql语句)inSql(&ldquo;id&rdquo;, &ldquo;select id from table where id < 3&rdquo;) &mdash;&ndash;> id in (select id from table where id < 3)
notInSql字段NOT IN ( sql语句)notInSql(&ldquo;id&rdquo;, &ldquo;select id from table where id < 3&rdquo;) &mdash;&ndash;> age not in (select id from table where id < 3)
groupBy分组:GROUP BY 字段,&hellip;例: groupBy(&ldquo;id&rdquo;, &ldquo;name&rdquo;) &mdash;> group by id, name
orderByAsc排序:ORDER BY字段,&hellip; ASC例: orderByAsc(&ldquo;id&rdquo;, &ldquo;name&rdquo;) &mdash;> order by id ASC, name ASC
orderByDesc排序:ORDER BY 字段,&hellip;DESC例: orderByDesc(&ldquo;id&rdquo;, &ldquo;name&rdquo;) &mdash;> order by id DESC, name DESC
orderBy排序:ORDER BY字段,&hellip;例: orderBy(true,true,&ldquo;id&rdquo;,&ldquo;name&rdquo;) &mdash;&ndash;> order by id ASC,name ASC
havingHAVING ( sql语句)having(&ldquo;sum(age) >{0}&rdquo;,11) &mdash;> having sum(age) > 11
or拼接OR主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)例:eq(&ldquo;id&rdquo;,1).or().eq(&ldquo;name&rdquo;,&ldquo;老王&rdquo;) &mdash;> id = 1 or name = '老王
andAND嵌套例: and(i -> i.eq(&ldquo;name&rdquo;,&ldquo;李白&rdquo;).ne(&ldquo;status&rdquo;,&ldquo;活着&rdquo;)) &mdash;> and (name ='李白&rsquo; and status &rsquo;活着&rsquo;)
apply拼接sql该方法可用于数据库函数动态入参的params对应前面sqlHaving内部的{index}部分.这样是不会有sql注入风险的,反之会有! 例: apply(&ldquo;date_format(dateColumn, &lsquo;%Y一%m-%d&rsquo;) ={0}&rdquo;, &ldquo;2008-08-08&rdquo;) &mdash;> date_format(dateColumn,&rsquo;%Y一%m-%d&rsquo;) = &lsquo;2008-08-08&rsquo;")
last无视优化规则直接拼接到sql 的最后无视优化规则直接拼接到sql 的最后只能调用一次,多次调用以最后一次为准有sql注入的风险,请谨慎使用例: last(&ldquo;limit 1&rdquo;)
exists拼接EXISTS ( sql语句)&mdash;> exists (select id from table where age = 1)例: notExists(&ldquo;select id from table where age = 1&rdquo;) &mdash;>exists (select id from table where age = 1)
notExists拼接NOT EXISTS ( sql语句)例: notExists(&ldquo;select id from table where age = 1&rdquo;) &mdash;&ndash;> not exists (select id from table where age = 1)
nested正常嵌套不带AND或者 OR正常嵌套不带AND或者OR例: nested(i -> i.eq(&ldquo;name&rdquo;,&ldquo;李白&rdquo;).ne(&ldquo;status&rdquo;,&ldquo;活着&rdquo;)) &mdash;> (name = '李白&rsquo;and status 活着&rsquo;)

来源:https://blog.csdn.net/w13966597931/article/details/127412114

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com