解决实体类属性字段和数据库字段不一致的问题
一、起别名
查询sql语句时给字段起别名,别名和实体类属性字段一致
<select id="getUserList" resultType="User">
select USER_ID as id,USER_NAME as name,USER_PASSWORD as password from user2 where USER_ID = #{id};
</select>
二、resultMap
使用mybatis配置文件中配置resultMap进行字段映射
<resultMap id="xxx" type="com.mybatis.domain.User">
<id property="id" column="ID"></id>
<result property="userName" column="USER_NAME"></result>
<result property="password" column="PASSWORD"></result>
<result property="userInformation" column="USER_INFORMATION"></result>
</resultMap>
使用@Result()和@ResultMap()注解
@Results()注解类似<resultMap id="resultField"></resultMap>
@ResultMap()可以让多个接口使用@Result()中的字段映射,注意@Result注解id和ResultMap注解中的value值一致
@Select({"select * from sys_user"})
@Results(id="userMap", value={
@Result(column="id", property="id", id=true),
@Result(column="user_name", property="userName"),
@Result(column="user_password ", property="userPassword"),
@Result(column="user_email", property="userEmail"),
@Result(column="user_info", property="userInfo"),
@Result(column="head_img", property="headImg", jdbcType=JdbcType.BLOB),
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP)
})
List<User> queryUserList();
@ResultMap()注解类似
<select id="queryUserList" resultMap="resultField"></select>
// 使用暂时失败@Select({"select id,user_name,user_password,user_email,user_info,head_img,create_time from sys_user where id = #{id}"}) @Results(id="userMap", value={ @Result(column="id", property="id", id=true), @Result(column="user_name", property="userName"), @Result(column="user_password ", property="userPassword"), @Result(column="user_email", property="userEmail"), @Result(column="user_info", property="userInfo"), @Result(column="head_img", property="headImg", jdbcType=JdbcType.BLOB), @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP) }) User selectUserById(Long id); @Select({"select * from sys_user"}) @ResultMap("userMap") List<User> queryUserList();
三、驼峰式命名
根据数据库字段名的下划线实体类属性字段进行驼峰式命名
配置文件中开启驼峰转换
yml配置
mybatis:
configuration:
map-underscore-to-camel-case: true #开启数据库字段驼峰转换
mybatis配置
<configuration>
<!--设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>