问答详情
源自:7-1 通用service

关于Mybatis-Plus的LambdaQueryWrapper的实际使用问题

https://img3.mukewang.com/5d28419d00011edf10870284.jpg

哈喽,老师,在看了老师的教程后在项目中引入了Mybatis-Plus。想请教一个实际使用上的问题。

Q1:在第一个红色框中,我使用的这个notIn需要判断传入的值是否为空的。不然会报错,是否有更好的方法;

Q2:在第二个红色框中,我使用的deleteBatchIds传入的值也需要判断下是否为空的,不然也会报sql的错误;

上面的两个问题,主要是想问下有没有更好的方法,还是说就是按照上图代码的解决方式。

下图是报错的问题,应该是因为传入的参数为空的时候拼接sql出错了


https://img2.mukewang.com/5d28423d0001b48916300196.jpg

先谢谢老师了!!!???


提问者:Amour杰杰陆 2019-07-12 16:23

个回答

  • 老猿
    2019-07-12 16:49:37
    已采纳

           关于第一个问题,你可以使用,第一个参数为condition的notIn方法,如果condition为false,该条件就不会加入到sql中。

           我写了个类似的例子,供你参考。

           lambdaQuery.notIn(problemIds.size() > 0, User::getAge , problemIds);

           关于第二个问题,我没有太好的解决办法,因为该方法要求idList 主键ID列表(不能为 null 以及 empty)。所以得先做一下非空非empty判断。可以使用MP提供的工具类进行判断,代码如下:

    if(CollectionUtils.isEmpty(needDelIds)) {

    //你的删除业务逻辑

    }