mybatis中從列名到屬性名的自動映射

問題背景

從數(shù)據(jù)庫中取出數(shù)據(jù)映射到實體類時,實體類中只有部分屬性映射成功,其余屬性值皆為null。

問題描述

如下圖AreaDao.xml文件中描述了queryArea()方法從數(shù)據(jù)庫獲取Area對象的各個屬性值的查詢過程,最后執(zhí)行查詢結果顯示只有屬性priority被成功地賦值

AreaDao.xml

<select id="queryArea" resultType="com.imooc.wechatpro.model.Area">
        SELECT area_id, area_name, priority, create_time, last_edit_time
        FROM tb_area
        ORDER BY priority
        DESC
</select>
AreaDaoTest.java

Area area = areaDao.queryAreaById(3);
area = {Area@7489} 
 areaId = null
 areaName = null
 priority = {Integer@7513} 312
 createTime = null
 lastEditTime = null

數(shù)據(jù)庫中對應的表tb_area:

mysql> select * from tb_area;
+---------+-----------+----------+-------------+----------------+
| area_id | area_name | priority | create_time | last_edit_time |
+---------+-----------+----------+-------------+----------------+
|       1 | 南苑      |      302 | NULL        | NULL           |
|       2 | 北苑      |      307 | NULL        | NULL           |
|       3 | 東苑      |      312 | NULL        | NULL           |
+---------+-----------+----------+-------------+----------------+

原因

實體類Area中的屬性使用的是駝峰命名規(guī)則,默認情況下無法與數(shù)據(jù)庫表的列名相匹配

Area.java

public class Area {

    private Integer areaId;

    private String areaName;

    private Integer priority;

    private Date createTime;

    private Date lastEditTime;
    ······
}

解決辦法

在mybatis的配置文件mybatis-config.xml中將mapUnderscoreToCamelCase設為true,關于配置文件mybatis-config.xml的各種屬性配置可以參考官方文檔

<configuration>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
</configuration>

當然這還沒完,為了讓文件mybatis-config.xml生效,需要將該文件的路徑添加到全局配置文件application.properties(or application.yml)的配置中,如

application.properties

mybatis.config-location=classpath:mybatis-config.xml

在這里,我的mybatis-config.xml文件在resources目錄下,因此使用路徑classpath:mybatis-config.xml

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,224評論 0 4
  • 1 Mybatis入門 1.1 單獨使用jdbc編程問題總結 1.1.1 jdbc程序 上邊使...
    哇哈哈E閱讀 3,410評論 0 38
  • 關于Mongodb的全面總結 MongoDB的內部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,284評論 2 89
  • 1 版本說明 springboot:2.0 jdk:1.8 2 創(chuàng)建springBoot項目 創(chuàng)建項目時勾選必要w...
    Java小鋪閱讀 845評論 2 5
  • 放在四年前,我是沒想過我會來到開封的。雖然這個地方符合我所有的期待,不太發(fā)達,生活節(jié)奏慢,文化氣息濃厚,...
    今天蚊子咬我了嗎閱讀 309評論 0 0

友情鏈接更多精彩內容