JAVA笔记 | 使用MyBatis-Plus条件构造器中select方法的坑

背景

单表查询中,由于字段较多,且有一些大字段(富文本啥的)导致查询接口速度会有影响,所以采用select方法指定查询的字段,但是当符合条件时,如果想要的字段为null,则此时依旧会查询一条记录,集合size=1,但是会提示“All elements are null”,此时又因为跳过了集合的非空判断,导致一些取值操作会报空指针异常。

例子

...  
LambdaQueryWrapper<User> query = new LambdaQueryWrapper<>();
        query.select(User::getName).eq(User::getId,id);
        List<User> users = this.userService.list(query);
        if(CollectionUtil.isNotEmpty(users)){
            String name = users.get(0).getName();
        }
...

调整方法

(1)多加一步集合内第一个元素判空操作。

 if(CollectionUtil.isNotEmpty(users) && null != users.get(0)){
     String name = users.get(0).getName();
 }

(2)或者采用去除不需要字段的形式,而非只查需要需要的字段,这样就能避免只查需要字段为空导致整个集合内容为空造成的错误。

query.select(User.class,i -> !i.getLongTest().equals("long_test")).eq(User::getId,id);

(3)用传统的查询方式去查,要什么查什么不用mybatis plus条件构造器

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值