一起来学Mybatis Plus(六) & 条件构造器

622 阅读9分钟

前言

目前正在出一个Mybatis Plus系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~

之前给大家讲过Mybatis教程,而MyBatis-Plus 是一个 MyBatis 的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。大家需要注意的是它只是一个工具,大家需要掌握和重点学习的依然是Mybatis,在熟练掌握基础的情况下使用MyBatis-Plus会达到事半功倍的效果。

好了, 废话不多说直接开整吧~

Mybatis Plus给我们提供了非常多的条件构造方法,下面一起来看下

allEq

allEq(Map<R, V> params)
allEq(Map<R, V> params, boolean null2IsNull)
allEq(boolean condition, Map<R, V> params, boolean null2IsNull)

全部eq(或个别isNull),个别参数说明:

  • params : key为数据库字段名,value为字段值
  • null2IsNull : 为true则在mapvaluenull时调用 isNull 方法,为false时则忽略valuenull
Map<String, Object> params = new HashMap<>();
params.put("name", "小明");
params.put("age", null);

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.allEq(params, false);

userMapper.selectList(queryWrapper);

eq

这个很简单,之前给大家介绍过

  • 等于 =
eq(R column, Object val)
eq(boolean condition, R column, Object val)
queryWrapper.eq("name", "小明");

ne

eq相反

  • 不等于
ne(R column, Object val)
ne(boolean condition, R column, Object val)
queryWrapper.ne("name", "小明");

gt

gt(R column, Object val)
gt(boolean condition, R column, Object val)
  • 大于 >
queryWrapper.gt("age", "20");

ge

ge(R column, Object val)
ge(boolean condition, R column, Object val)
  • 大于等于 >=
queryWrapper.ge("age", "20");

lt

lt(R column, Object val)
lt(boolean condition, R column, Object val)
  • 小于 <
queryWrapper.lt("age", "20");

le

le(R column, Object val)
le(boolean condition, R column, Object val)
  • 小于等于 <=
queryWrapper.le("age", "20");

between

between(R column, Object val1, Object val2)
between(boolean condition, R column, Object val1, Object val2)
  • 区间查询
queryWrapper.between("age", "20", "30");

notBetween

notBetween(R column, Object val1, Object val2)
notBetween(boolean condition, R column, Object val1, Object val2)
  • 不在区间
queryWrapper.notBetween("age", "20", "30");

like

like(R column, Object val)
like(boolean condition, R column, Object val)
  • LIKE '%值%'
queryWrapper.like("name","%小明%");

notLike

notLike(R column, Object val)
notLike(boolean condition, R column, Object val)
  • NOT LIKE '%值%'
queryWrapper.notLike("name","%小明%");

likeLeft

likeLeft(R column, Object val)
likeLeft(boolean condition, R column, Object val)
  • LIKE '%值'
queryWrapper.likeLeft("name","小明");

ikeRight

ikeRight(R column, Object val)
ikeRight(boolean condition, R column, Object val)
  • ILIKE '%值%'
queryWrapper.ikeRight("name","小明");

notLikeLeft

notLikeLeft(R column, Object val)
notLikeLeft(boolean condition, R column, Object val)
  • NOT LIKE '%值'
queryWrapper.notLikeLeft("name","小明");

notLikeRight

notLikeRight(R column, Object val)
notLikeRight(boolean condition, R column, Object val)
  • NOT LIKE '值%'
queryWrapper.notLikeRight("name","小明");

isNull

isNull(R column)
isNull(boolean condition, R column)
  • 为空
queryWrapper.isNull("age");

isNotNull

isNotNull(R column)
isNotNull(boolean condition, R column)
  • 不为空
queryWrapper.isNotNull("age");

in

in(R column, Collection<?> coll)
in(boolean condition, R column, Collection<?> coll)
  • 在集合中
queryWrapper.in("age", Arrays.asList(1,2,3));

notIn

notIn(R column, Collection<?> coll)
  • 不在集合中
queryWrapper.notIn("age", Arrays.asList(1,2,3));

inSql

inSql(R column, String inValue)
inSql(boolean condition, R column, String inValue)
  • 字段 IN ( sql语句 )
queryWrapper.inSql("age", "select age from user where age > 20");

notInSql

notInSql(R column, String inValue)
notInSql(boolean condition, R column, String inValue)
  • 字段 NOT IN ( sql语句 )
queryWrapper.notInSql("age", "select age from user where age > 20");

groupBy

groupBy(R... columns)
groupBy(boolean condition, R... columns)
  • 分组:GROUP BY 字段, ...
queryWrapper.groupBy("name", "age");

orderByAsc

orderByAsc(R... columns)
orderByAsc(boolean condition, R... columns)
  • 排序:ORDER BY 字段, ... ASC
queryWrapper.orderByAsc("name", "age");

orderByDesc

orderByDesc(R... columns)
orderByDesc(boolean condition, R... columns)
  • 排序:ORDER BY 字段,... DESC
queryWrapper.orderByDesc("name", "age");

orderBy

orderBy(boolean condition, boolean isAsc, R... columns)

排序:ORDER BY 字段, ...

queryWrapper.orderBy(true, true, "name", "age");

having

having(String sqlHaving, Object... params)
having(boolean condition, String sqlHaving, Object... params)
  • HAVING ( sql语句 )
queryWrapper.having("age > 20");

func

func(Consumer<Children> consumer)
func(boolean condition, Consumer<Children> consumer)
  • func 方法(主要方便在出现if...else下调用不同方法能不断链)
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.func(i -> if(true) {i.eq("id", 1)} else {i.ne("id", 1)});

or

or()
or(boolean condition)
  • 拼接 OR
queryWrapper.eq("name", "小明").or().eq("name", "小红");

// 嵌套
queryWrapper.or(i -> i.eq("name", "李白").ne("status", "活着"))

and

and(Consumer<Param> consumer)
and(boolean condition, Consumer<Param> consumer)
  • AND 嵌套
queryWrapper.eq("name", "小明").and(i -> i.eq("name", "小红"));

// 嵌套
queryWrapper.and(i -> i.eq("name", "李白").ne("status", "活着"))

apply

apply(String applySql, Object... params)
apply(boolean condition, String applySql, Object... params)
  • 拼接 sql

注意事项:

该方法可用于数据库函数 动态入参的params对应前面applySql内部的{index}部分.这样是不会有sql注入风险的

queryWrapper.apply("id = 1")

last

last(String lastSql)
last(boolean condition, String lastSql)
  • 无视优化规则直接拼接到 sql 的最后
queryWrapper.last("limit 1")

exists

exists(String existsSql)
exists(boolean condition, String existsSql)
  • 拼接 EXISTS ( sql语句 )
queryWrapper.exists("select id from table where age = 1")

notExists

notExists(String notExistsSql)
notExists(boolean condition, String notExistsSql)
  • 拼接 NOT EXISTS ( sql语句 )
queryWrapper.notExists("select id from table where age = 1")

结束语

下节给大家讲解主键策略~

本着把自己知道的都告诉大家,如果本文对有所帮助,点赞+关注鼓励一下呗~

MybatisPlus教程相关文章

往期Nginx教程相关文章

往期Docker教程相关文章

往前Shell脚本编程相关文章

往期Linux相关文章

往期面试题相关文章

项目源码(源码已更新 欢迎star⭐️)

往期设计模式相关文章

设计模式项目源码(源码已更新 欢迎star⭐️)

Kafka 专题学习

项目源码(源码已更新 欢迎star⭐️)

ElasticSearch 专题学习

项目源码(源码已更新 欢迎star⭐️)

往期并发编程内容推荐

推荐 SpringBoot & SpringCloud (源码已更新 欢迎star⭐️)

博客(阅读体验较佳)