解決實體類屬性欄位和資料庫欄位不一致的問題
阿新 • • 發佈:2021-06-11
一、別名
操作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()註解
@Result()註解類似<resultMap id="resultField"></resultMap>
@ResultMap()註解類似<select id="queryUserList" resultMap="resultField"></select>
@ResultMap()可以讓多個介面使用@Result()中的欄位對映,注意@Result註解id和ResultMap註解中的value值一致
@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>