解决mybatis使用注解@Select 部分数据为空的问题
当使用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:
下一篇:
MySql基础知识总结(SQL优化篇一)