QueryWarpper的使用方法,MyBatics Plus的查询方法处理

简介: QueryWarpper的使用方法,MyBatics Plus的查询方法处理

MyBatics Plus官网

1.AbstractWrapper说明:

2.allEq全部eq

3.eq等于

4.ne不等于

5.gt大于

6.ge大于等于

7. lt小于

8.le小于等于

9. between在区间内

10.notBetween不在区间内

11.like模糊匹配

12.notLike模糊不匹配

13.likeLeft模糊左匹配

14. likeRight模糊右匹配

15.isNull是否为null

16. isNotNull不等于null

17.in在范围期间

18.notIn不在区间内

19. inSql子sql语句

20.notInSql不在sql内

21.groupBy组合排序

22.orderByAsc升序

23.orderByDesc倒叙

24.orderBy排序

25.having

26. func主要用于判断连不能断

27.or或者

28. and

29. nested

30.apply

31.last

32.exists

33.notExists

34.select

35.UpdateWrapper

# set

# setSql

# lambda


MyBatics Plus官网

简介 | MyBatis-Plus

1.AbstractWrapper说明:

QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类

用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件

注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为

2.allEq全部eq

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

image.gif

    个别参数说明:

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

    null2IsNull : 为true则在mapvaluenull时调用 isNull 方法,为false时则忽略valuenull

      • 例1: allEq({id:1,name:"老王",age:null})--->id = 1 and name = '老王' and age is null
      • 例2: allEq({id:1,name:"老王",age:null}, false)--->id = 1 and name = '老王'
      allEq(BiPredicate<R, V> filter, Map<R, V> params)
      allEq(BiPredicate<R, V> filter, Map<R, V> params, boolean null2IsNull)
      allEq(boolean condition, BiPredicate<R, V> filter, Map<R, V> params, boolean null2IsNull)

      image.gif

      个别参数说明:

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

      paramsnull2IsNull : 同上

        • 例1: allEq((k,v) -> k.indexOf("a") >= 0, {id:1,name:"老王",age:null})--->name = '老王' and age is null
        • 例2: allEq((k,v) -> k.indexOf("a") >= 0, {id:1,name:"老王",age:null}, false)--->name = '老王'

        3.eq等于

        eq(R column, Object val)
        eq(boolean condition, R column, Object val)

        image.gif

          • 等于 =
          • 例: eq("name", "老王")--->name = '老王'

          4.ne不等于

          ne(R column, Object val)
          ne(boolean condition, R column, Object val)

          image.gif

            • 不等于 <>
            • 例: ne("name", "老王")--->name <> '老王'

            5.gt大于

            gt(R column, Object val)
            gt(boolean condition, R column, Object val)

            image.gif

              • 大于 >
              • 例: gt("age", 18)--->age > 18

              6.ge大于等于

              ge(R column, Object val)
              ge(boolean condition, R column, Object val)

              image.gif

                • 大于等于 >=
                • 例: ge("age", 18)--->age >= 18

                7. lt小于

                lt(R column, Object val)
                lt(boolean condition, R column, Object val)

                image.gif

                  • 小于 <
                  • 例: lt("age", 18)--->age < 18

                  8.le小于等于

                  le(R column, Object val)
                  le(boolean condition, R column, Object val)

                  image.gif

                    • 小于等于 <=
                    • 例: le("age", 18)--->age <= 18

                    9. between在区间内

                    between(R column, Object val1, Object val2)
                    between(boolean condition, R column, Object val1, Object val2)

                    image.gif

                      • BETWEEN 值1 AND 值2
                      • 例: between("age", 18, 30)--->age between 18 and 30

                      10.notBetween不在区间内

                      notBetween(R column, Object val1, Object val2)
                      notBetween(boolean condition, R column, Object val1, Object val2)

                      image.gif

                        • NOT BETWEEN 值1 AND 值2
                        • 例: notBetween("age", 18, 30)--->age not between 18 and 30

                        11.like模糊匹配

                        like(R column, Object val)
                        like(boolean condition, R column, Object val)

                        image.gif

                          • LIKE '%值%'
                          • 例: like("name", "王")--->name like '%王%'

                          12.notLike模糊不匹配

                          notLike(R column, Object val)
                          notLike(boolean condition, R column, Object val)

                          image.gif

                            • NOT LIKE '%值%'
                            • 例: notLike("name", "王")--->name not like '%王%'

                            13.likeLeft模糊左匹配

                            likeLeft(R column, Object val)
                            likeLeft(boolean condition, R column, Object val)

                            image.gif

                              • LIKE '%值'
                              • 例: likeLeft("name", "王")--->name like '%王'

                              14. likeRight模糊右匹配

                              likeRight(R column, Object val)
                              likeRight(boolean condition, R column, Object val)

                              image.gif

                                • LIKE '值%'
                                • 例: likeRight("name", "王")--->name like '王%'

                                15.isNull是否为null

                                isNull(R column)
                                isNull(boolean condition, R column)

                                image.gif

                                  • 字段 IS NULL
                                  • 例: isNull("name")--->name is null

                                  16. isNotNull不等于null

                                  isNotNull(R column)
                                  isNotNull(boolean condition, R column)

                                  image.gif

                                    • 字段 IS NOT NULL
                                    • 例: isNotNull("name")--->name is not null

                                    17.in在范围期间

                                    in(R column, Collection<?> value)
                                    in(boolean condition, R column, Collection<?> value)

                                    image.gif

                                      • 字段 IN (value.get(0), value.get(1), ...)
                                      • 例: in("age",{1,2,3})--->age in (1,2,3)
                                      in(R column, Object... values)
                                      in(boolean condition, R column, Object... values)

                                      image.gif

                                        • 字段 IN (v0, v1, ...)
                                        • 例: in("age", 1, 2, 3)--->age in (1,2,3)

                                        18.notIn不在区间内

                                        notIn(R column, Collection<?> value)
                                        notIn(boolean condition, R column, Collection<?> value)

                                        image.gif

                                          • 字段 NOT IN (value.get(0), value.get(1), ...)
                                          • 例: notIn("age",{1,2,3})--->age not in (1,2,3)
                                          notIn(R column, Object... values)
                                          notIn(boolean condition, R column, Object... values)

                                          image.gif

                                            • 字段 NOT IN (v0, v1, ...)
                                            • 例: notIn("age", 1, 2, 3)--->age not in (1,2,3)

                                            19. inSql子sql语句

                                            inSql(R column, String inValue)
                                            inSql(boolean condition, R column, String inValue)

                                            image.gif

                                              • 字段 IN ( sql语句 )
                                              • 例: inSql("age", "1,2,3,4,5,6")--->age in (1,2,3,4,5,6)
                                              • 例: inSql("id", "select id from table where id < 3")--->id in (select id from table where id < 3)

                                              20.notInSql不在sql内

                                              notInSql(R column, String inValue)
                                              notInSql(boolean condition, R column, String inValue)

                                              image.gif

                                                • 字段 NOT IN ( sql语句 )
                                                • 例: notInSql("age", "1,2,3,4,5,6")--->age not in (1,2,3,4,5,6)
                                                • 例: notInSql("id", "select id from table where id < 3")--->id not in (select id from table where id < 3)

                                                21.groupBy组合排序

                                                groupBy(R... columns)
                                                groupBy(boolean condition, R... columns)

                                                image.gif

                                                  • 分组:GROUP BY 字段, ...
                                                  • 例: groupBy("id", "name")--->group by id,name

                                                  22.orderByAsc升序

                                                  orderByAsc(R... columns)
                                                  orderByAsc(boolean condition, R... columns)

                                                  image.gif

                                                    • 排序:ORDER BY 字段, ... ASC
                                                    • 例: orderByAsc("id", "name")--->order by id ASC,name ASC

                                                    23.orderByDesc倒叙

                                                    orderByDesc(R... columns)
                                                    orderByDesc(boolean condition, R... columns)

                                                    image.gif

                                                      • 排序:ORDER BY 字段, ... DESC
                                                      • 例: orderByDesc("id", "name")--->order by id DESC,name DESC

                                                      24.orderBy排序

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

                                                      image.gif

                                                        • 排序:ORDER BY 字段, ...
                                                        • 例: orderBy(true, true, "id", "name")--->order by id ASC,name ASC

                                                        25.having

                                                        having(String sqlHaving, Object... params)
                                                        having(boolean condition, String sqlHaving, Object... params)

                                                        image.gif

                                                          • HAVING ( sql语句 )
                                                          • 例: having("sum(age) > 10")--->having sum(age) > 10
                                                          • 例: having("sum(age) > {0}", 11)--->having sum(age) > 11

                                                          26. func主要用于判断连不能断

                                                          func(Consumer<Children> consumer)
                                                          func(boolean condition, Consumer<Children> consumer)

                                                          image.gif

                                                            • func 方法(主要方便在出现if...else下调用不同方法能不断链)
                                                            • 例: func(i -> if(true) {i.eq("id", 1)} else {i.ne("id", 1)})

                                                            27.or或者

                                                            or()
                                                            or(boolean condition)

                                                            image.gif

                                                              • 拼接 OR

                                                              注意事项:

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

                                                                • 例: eq("id",1).or().eq("name","老王")--->id = 1 or name = '老王'
                                                                or(Consumer<Param> consumer)
                                                                or(boolean condition, Consumer<Param> consumer)

                                                                image.gif

                                                                  • OR 嵌套
                                                                  • 例: or(i -> i.eq("name", "李白").ne("status", "活着"))--->or (name = '李白' and status <> '活着')

                                                                  28. and

                                                                  and(Consumer<Param> consumer)
                                                                  and(boolean condition, Consumer<Param> consumer)

                                                                  image.gif

                                                                    • AND 嵌套
                                                                    • 例: and(i -> i.eq("name", "李白").ne("status", "活着"))--->and (name = '李白' and status <> '活着')

                                                                    29. nested

                                                                    nested(Consumer<Param> consumer)
                                                                    nested(boolean condition, Consumer<Param> consumer)

                                                                    image.gif

                                                                      • 正常嵌套 不带 AND 或者 OR
                                                                      • 例: nested(i -> i.eq("name", "李白").ne("status", "活着"))--->(name = '李白' and status <> '活着')

                                                                      30.apply

                                                                      apply(String applySql, Object... params)
                                                                      apply(boolean condition, String applySql, Object... params)

                                                                      image.gif

                                                                        • 拼接 sql

                                                                        注意事项:

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

                                                                          • 例: apply("id = 1")--->id = 1
                                                                          • 例: apply("date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'")--->date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'")
                                                                          • 例: apply("date_format(dateColumn,'%Y-%m-%d') = {0}", "2008-08-08")--->date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'")

                                                                          31.last

                                                                          last(String lastSql)
                                                                          last(boolean condition, String lastSql)

                                                                          image.gif

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

                                                                            注意事项:

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

                                                                              • 例: last("limit 1")

                                                                              32.exists

                                                                              exists(String existsSql)
                                                                              exists(boolean condition, String existsSql)

                                                                              image.gif

                                                                                • 拼接 EXISTS ( sql语句 )
                                                                                • 例: exists("select id from table where age = 1")--->exists (select id from table where age = 1)

                                                                                33.notExists

                                                                                notExists(String notExistsSql)
                                                                                notExists(boolean condition, String notExistsSql)

                                                                                image.gif

                                                                                  • 拼接 NOT EXISTS ( sql语句 )
                                                                                  • 例: notExists("select id from table where age = 1")--->not exists (select id from table where age = 1)
                                                                                  • QueryWrapper

                                                                                  说明:

                                                                                  继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件

                                                                                  及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取

                                                                                  34.select

                                                                                  select(String... sqlSelect)
                                                                                  select(Predicate<TableFieldInfo> predicate)
                                                                                  select(Class<T> entityClass, Predicate<TableFieldInfo> predicate)

                                                                                  image.gif

                                                                                    • 设置查询字段

                                                                                    说明:

                                                                                    以上方分法为两类.

                                                                                    第二类方法为:过滤查询字段(主键除外),入参不包含 class 的调用前需要wrapper内的entity属性有值! 这两类方法重复调用以最后一次为准

                                                                                      • 例: select("id", "name", "age")
                                                                                      • 例: select(i -> i.getProperty().startsWith("test"))

                                                                                      35.UpdateWrapper

                                                                                      说明:

                                                                                      继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件

                                                                                      LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取!

                                                                                      # set

                                                                                      set(String column, Object val)
                                                                                      set(boolean condition, String column, Object val)

                                                                                      image.gif

                                                                                        • SQL SET 字段
                                                                                        • 例: set("name", "老李头")
                                                                                        • 例: set("name", "")--->数据库字段值变为空字符串
                                                                                        • 例: set("name", null)--->数据库字段值变为null

                                                                                        # setSql

                                                                                        setSql(String sql)

                                                                                        image.gif

                                                                                          • 设置 SET 部分 SQL
                                                                                          • 例: setSql("name = '老李头'")

                                                                                          # lambda

                                                                                            • 获取 LambdaWrapper
                                                                                              QueryWrapper中是获取LambdaQueryWrapper
                                                                                              UpdateWrapper中是获取LambdaUpdateWrapper

                                                                                            image.gif编辑

                                                                                            上面主要是参考官网的内容,用于记录知识点即可

                                                                                            相关文章
                                                                                            原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
                                                                                            原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
                                                                                            原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
                                                                                            |
                                                                                            存储 SQL Oracle
                                                                                            Oracle存储过程中如何使用数组(附范例)
                                                                                            Oracle存储过程中如何使用数组(附范例)
                                                                                            |
                                                                                            7天前
                                                                                            |
                                                                                            存储 SQL Oracle
                                                                                            Oracle存储过程与自定义函数的调用:异同与实战场景
                                                                                            【4月更文挑战第19天】Oracle的存储过程与自定义函数各有特色,存储过程用于封装复杂SQL操作,常在批量处理和数据维护中使用,通过CALL或EXECUTE调用;而自定义函数则用于简单计算和查询,返回单一值,可直接在SQL语句中调用。了解两者异同,如返回值方式、调用方式和应用场景,能提升数据库管理效率。实战场景包括:使用存储过程定期清理过期数据,用自定义函数在查询中动态计算字段值。
                                                                                            |
                                                                                            7月前
                                                                                            |
                                                                                            Java
                                                                                            jpa实现增删改查,分页,自定义查询,jpql查询
                                                                                            jpa实现增删改查,分页,自定义查询,jpql查询
                                                                                            46 0
                                                                                            |
                                                                                            7月前
                                                                                            |
                                                                                            存储 Oracle Java
                                                                                            [亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
                                                                                            [亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
                                                                                            |
                                                                                            8月前
                                                                                            MaxonMotor参数查询方法
                                                                                            我们在拿到Maxon Motor的时候,想要知道电机具体的参数,其实我们拿到手的不是单独的电机,而是组装好的成品电机,包括减速箱、电机、编码器,如下图所示:
                                                                                            59 0
                                                                                            MybatisPlus查询条件构造器的in的用法避坑
                                                                                            MybatisPlus查询条件构造器的in的用法避坑
                                                                                            |
                                                                                            SQL Java 数据库连接
                                                                                            MyBatis快速入门——第二章、参数传递demo(id查询&模糊查询)
                                                                                            MyBatis快速入门——第二章、参数传递demo(id查询&模糊查询)
                                                                                            93 0
                                                                                            MyBatis快速入门——第二章、参数传递demo(id查询&模糊查询)
                                                                                            |
                                                                                            SQL 存储 缓存
                                                                                            MySQL查询重写插件
                                                                                            MySQL查询重写插件
                                                                                            148 0
                                                                                            MySQL查询重写插件
                                                                                            |
                                                                                            JSON 前端开发 JavaScript
                                                                                            Mockjs模拟接口实现增删改查、分页、多条件查询
                                                                                            Mockjs模拟接口实现增删改查、分页、多条件查询
                                                                                            547 0
                                                                                            Mockjs模拟接口实现增删改查、分页、多条件查询