问题描述
编写JavaBean时想着保持属性名和数据字段名一致,即exam_id和exam_title,结果发现后端在打印日志的时候发现可以正常获取数据库当中的值,但是直接用localhost:8080/exams访问数据的时候,返回的为[null,null]
@GetMapping("/exams")
public List<Exams> exams(){
return examsMapper.selectList(null);
}
@Mapper
public interface ExamsMapper extends BaseMapper<Exams> {
}
追根溯源
java里面默认是驼峰命名规范。
Mybaits有一个自动转驼峰的配置。
解决方案
按照规范,应该把Java bean的字段改成驼峰。
例如exam_id 改成examId,exam_title 改成examTitle
拓展
Java bean没有get set方法, 虽然@Data注解封装了get 和set方法,但是如果要修改这个业务对象的值,例如前端传进来的对象,就要判定是否满足条件,如果满足,就把状态字段设置为1,然后更新这条记录,总不能全部写sql。
还有,如果要获取对象的字段值呢?即将多个数据对象,分别抽取几个字段,拼装成一个视图层的视图对象。不一定是数据对象DO,也可能是VO视图对象,DTO数据传输对象,BO业务对象,在实际业务流程中会有很多不同的数据对象。