# mybatis-plus 查询,值为 null,字段不显示问题
场景:
编写了一个 sql 返回 List<Map<String, Object>> 类型数据,而数据库中某些字段有 id 的值而没有 name 的值,此时 name 为 null 的应该查询出来是:{id:10,name:null} 但是结果却是:{id:10} 后面的 name 就没有了,这篇文章就是解决这个问题的
解决方案:
需要修改 mybatis-plus 的配置即可。将 mybatis-plus 的 call-setters-on-nulls 设置为 true 即可
mybatis-plus: | |
# 默认,每次执行 sql 都会开关 statement | |
executor-type: simple | |
configuration: | |
# 解决字段为 null 查询不显示问题 | |
call-setters-on-nulls: true |
# 代码案例
数据库表数据:
dao
@Mapper | |
public interface ClassDao extends BaseMapper<ClassEntity> { | |
@Select({ | |
"SELECT", | |
"*", | |
"FROM tab_class" | |
}) | |
List<Map<String, Object>> getInfo(); | |
} |
serviceImpl
@Service("classService") | |
public class ClassServiceImpl extends ServiceImpl<ClassDao, ClassEntity> implements ClassService { | |
@Resource | |
private ClassDao classDao; | |
@Override | |
public List<Map<String, Object>> getInfo() | |
{ | |
return classDao.getInfo(); | |
} | |
} |
controller
@RestController | |
@RequestMapping("/mpj/class") | |
public class ClassController { | |
@Autowired | |
private ClassService classService; | |
@GetMapping("/getInfo") | |
public List<Map<String, Object>> getInfo() | |
{ | |
return classService.getInfo(); | |
} | |
} |
# 在不使用配置 call-setters-on-nulls: true 的情况下的数据如下:
这并不是我们想要的