为了账号安全,请及时绑定邮箱和手机立即绑定

Mybatis-plus入门学习笔记之'查询'

标签:
Java

学习链接: Mybatis-plus入门
通用Mapper
1.查询(Retrieve)

  • 基本查询方法
    (基本方法在BaseMapper.class文件中,进行调用)
    id查询:selectById()
    多个id查询 selectBatchIds():

    userList.forEach(SysTem.out::println)  //迭代输出
    

    selectByMap():

    columnMap.put("name","王天风");  //name要对应数据库中格式
    
  • 以条件构造器为参数的查询方法(wrapper)
    AbstractWrapper.calss中调用
    like()、lt()小于、gt()大于:

    like()、between()、isNotNull():

    likeRight()、or()、orderByDesc()、orderByAsc():

    开始相对复杂的查询:
    apply()、inSql():

    or true是sql注入:

    // 此处写法存在sql注入问题,不建议使用
    userQuery.apply("date_format(create_time,'%Y-%m-%d')='2019-02-14' or true or true").inSql("manager_id","select id from user where name like '王%'");
    

    likeRight()、and()的Lambda表达式融合:

    like()、or()的Lambda表达式融合:

    如果开头是在括号中的判断,则开头通过nested进行条件的联合:
    (and、or优先级要注意)

    如果是要找特定数组下的,用in:

    如果是要选特定数量,在最后last(“limit n”) :
    last条件构造器:last(sql)。注意:有sql注入风险。确保参数没有风险再使用。

  • select中字段不全出现的处理方式
    select(可变参数)选择需要返回的字段

    select(传入lambda四大函数之一 predicate)排除不需要返回的字段

  • 条件构造器中condition的作用
    condition相关类中:
    condition 条件判断,当条件为true则查询条件加入where
    即如果判定isNotEmpty为true,则进行该字段的对比查询
    如果返回false,说明这个字段为空,不进行按此字段查询

  • 创建条件构造器时传入实体对象

    实体传参和Querywrapper条件构造互不冲突:
    在使用过程中一点要慎重,会重复出现

    实体作为条件构造方法的参数,实体字段默认为等于,如果不想等于的做法。

    也可以根据源码改造

  • 条件构造器中allEq用法

    allEq中主要传入一个Map对象,属性和值的键值对,如果值中有null,默认拼接is null,也可以加false,,那么就传入第二个参数为false:

    可以通过设置忽略null,如果想忽略传入的map中的某个键或值,通过调用Bipredicate方法加filter进行:(下例中忽略“name”字段,也可以忽略值value,但是要注意判断字段类型)

  • 其他以条件构造器为参数的方法
    selectMaps():
    1、selectMap:List集合的泛型不再是实体,而是map集合。其中key表示字段名,value表示字段值。
    使用场景1:当实体类属性非常多时,不易查看。如果返回的是一个实体类,那么即使我们设定了返回字段,那么它的值为null,但是属性仍然存在。如果返回的是Map类型,当指定了返回字段时,那么没返回的就不会存在。


    使用场景2:当返回的不是一条一条记录时,也就是返回的字段不在实体类属性中,比如一些统计,像平均值,最大值,最小值这样的。


    2、selectObject:List集合的泛型不再是实体,而是Object,只返回第一个字段的值。其他的会被舍弃。


    3、selectCount:查询符合条件的总记录数的。

    4、selectOne:查询符合条件的数据,只会返回一条数据。
    注意:查询的结果必须是一条或者查不到(多于1条就会报错)。

  • Lambda条件构造器
    lambda条件构造器的创建有3种方式

    1、通过查询构造器QueryWrapper创建

    2、通过new直接创建lambda条件构造器

    3、通过构造器工具类Wrappers创建(此时需要泛型)
    通过lambdaWrapper进行构造,能够防止误写,推荐使用Wrappers.lambda…

    例一

    例二

    4、3.0.7新增的创建lambda条件构造器,通过LambdaQueryChainWrapper,并且需要一个Mapper接口作为参数(通过源码可以,它是对普通查询构造器的再次封装,源码中仍然是通过Mapper接口去调用,方便一些)。

使用mybatis-plus可以简化开发中的代码,使很多应用场景变得简单,在使用条件构造器时,要注意熟练掌握各种方法,灵活使用,还是要多加练习!

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
0
获赞与收藏
1

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消