我们看到查询返回的结果中大部分字段是有值的,但是deptId,createTime,updateTime这几个字段是没有值的,而数据库中是有对应的字段值的,这是为什么呢?
原因:如果实体类属性名和数据库表查询返回的字段名不一致,不能自动封装。
解决方案:
1. 起别名
@Select(" ....+dept_id AS deptId, create_time AS createTime +...from emp where id=#{id}")
public Emp getById(Integer id);
2. 结果映射
@Results({@Result(column = "dept_id", property = "deptId"),
@Result(column = "create_time", property = "createTime"),
@Result(column = "update_time", property = "updateTime")})
@Select("select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time from emp where id=#{id}")
public Emp getById(Integer id);
3. 开启驼峰命名
# 在application.properties或者application.yml中添加:
mybatis.configuration.map-underscore-to-camel-case=true
要使用驼峰命名前提是 实体类的属性 与 数据库表中的字段名严格遵守驼峰命名。