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

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

首先是.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

标签:mybatisPlus,条件,构造器
0
投稿

猜你喜欢

  • C#使用SQL Dataset数据集代码实例

    2023-02-24 08:23:07
  • Java读取properties配置文件的8种方式汇总

    2022-05-03 17:11:34
  • Android横竖屏幕切换小结

    2023-04-15 08:03:20
  • Android编程之自定义锁屏实例分析

    2022-02-02 04:01:50
  • Java之Spring注解开发案例详解

    2022-05-23 05:33:02
  • 解决Jenkins集成SonarQube遇到的报错问题

    2023-11-24 08:54:10
  • C#实现鼠标消息捕获

    2021-06-14 20:38:38
  • maven如何动态统一修改版本号的方法步骤

    2022-06-05 20:08:43
  • JVM分配和回收堆外内存的方式与注意点

    2021-07-25 08:53:34
  • Android中使用GridView实现仿微信图片上传功能(附源代码)

    2023-11-27 02:01:25
  • 剑指Offer之Java算法习题精讲二叉树与N叉树

    2023-04-22 00:20:42
  • C#抓取网页数据 解析标题描述图片等信息 去除HTML标签

    2023-03-13 17:23:07
  • java中synchronized(同步代码块和同步方法)详解及区别

    2021-09-03 08:44:05
  • C++ 实现球迷 今日头条面试题

    2022-07-08 11:03:24
  • C#修改MAC地址类的实例

    2023-09-11 06:51:14
  • java8新特性教程之time包使用总结

    2023-02-08 03:58:19
  • Android 中倒计时验证两种常用方式实例详解

    2022-08-29 04:44:41
  • idea中同一SpringBoot项目多端口启动

    2023-05-09 06:39:27
  • 简单谈谈RxJava和多线程并发

    2023-08-02 00:27:52
  • SpringBoot整合mybatis-generator-maven-plugin的方法

    2022-08-14 18:34:22
  • asp之家 软件编程 m.aspxhome.com