解决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:

经验分享 程序员 微信小程序 职场和发展