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

举报
小马哥学JAVA 发表于 2023/02/18 17:55:51 2023/02/18
【摘要】 MyBatics Plus官网1.AbstractWrapper说明:2.allEq全部eq3.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是否为null1...

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

                                                                                            imageimage.gif编辑

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

                                                                                            【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
                                                                                            • 点赞
                                                                                            • 收藏
                                                                                            • 关注作者

                                                                                            评论(0

                                                                                            0/1000
                                                                                            抱歉,系统识别当前为高风险访问,暂不支持该操作

                                                                                            全部回复

                                                                                            上滑加载中

                                                                                            设置昵称

                                                                                            在此一键设置昵称,即可参与社区互动!

                                                                                            *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

                                                                                            *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。