实习期间遇到一个bug
-
前置条件:
签了保密协议,用student表举例
通过条件查询学生,返回 List
条件:学生状态 <> 退学 -
第一次逻辑
List<Student> mappings = mappingService.query()
.eq(Student::getSex, Sex)
.ne(Student::getStatus,"退学")
.list();
发现问题:
把status
字段为空的数据也排除掉了,不符合需求
- 询问导师后
这个问题是因为mysql特性,<>会把空值也忽略掉,而oracle就不会出现这个问题
解决办法
List<Student> mappings = mappingService.query()
.eq(Student::getId, id)
// 0 代表参数个数,可以输入多个参数
.apply(" IFNULL(学生状态,'') != {0}","退学")
.list();