解決實體類屬性字段和數據庫字段不一致的問題


解決實體類屬性字段和數據庫字段不一致的問題

一、起別名

查詢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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM