咱们先看下面这两张图

第一眼看到会觉得很奇怪,为什么使用mybatisplus查询不到值,而使用sql语句就可以。这里的错误在于参数类型错误,我们给eq传递的第一个参数是字段名称,第二个参数是一个list集合(应该为一个值),所以查询不到结果,但是这里不会报错,第二个参数是一个值,而不是集合。如果使用in(),第二个参数是集合。所以当使用mybatisplus出现问题时,首先先将它的sql打印出来(打印sql配置:mybatis-plus.configuration.log-impl: org.apache.ibatis.logging.stdout.StdOutImpl),查看sql。如果sql正确,那就再检查参数类型是否正确。

使用eq的时候如果传入list集合,会将整个list对象传进#{value} ;而使用in的时候,它会使用for循环遍历list集合,将其所有的值都取出来,in(#{value1},#{value2},#{valuen})。