当使用mybatis的@Select 注解进行查询并映射至User类时(图1-3)发现某些字段为空(图4)。
具体出现原因,查询出来的数据,与实体bean的字段不相匹配,导致null
实体bean的字段为驼峰形式,如,loginName, 而数据库为下划线LOGIN_NAME,因此,匹配不上,导致映射失败
解决方式:
使用@Results。
当数据库字段名与实体类对应的属性名不一致时,可以使用@Results映射来将其对应起来。column为数据库字段名,porperty为实体类属性名,jdbcType为数据库字段数据类型,id为是否为主键。
将UserMapper类更改为:
public interface UserMapper {
@Select("select * from ec_user where LOGIN_NAME = #{userna}")
@Results({
@Result(column="LOGIN_NAME", property="loginName", jdbcType=JdbcType.VARCHAR),
@Result(column="CREATE_DATE", property="createDate", jdbcType=JdbcType.TIMESTAMP)
})
User login(String username);
}
问题解决!
PS:
@Results用法总结