Mybatis resultType返回結果爲null的問題排查

sql 語句大致如下:

  <select id="findFinancialProductConfigList" resultType="com.xxx.FinancialProductConfigDTO">
    select  <include refid="Base_Column_List" />
    from fsc_xxx
    <where>
    ......
    <where>

resultType返回的FinancialProductConfigDTO類,屬性名稱都是以駝峯形式命名的,比如financialProductConfigId;而對應的數據庫表裏面的字段都是下劃線形式的,如financial_product_config_id。

結果發現,返回的結果都是null,打印了SQL,確實查到了記錄,因此判定是結果集和返回類型的字段映射問題。之前一直以爲Mybatis會自動把數據庫下劃線字段轉換成POJO類(resultType對應的類)的駝峯屬性字段,但是發現是自己記錯了,這個Mybatis默認不會自動轉換,所以返回結果爲null,特此記錄。

解決辦法有下面幾種:

1、select 字段時,給數據庫下劃線字段加別名,改成對應的類駝峯屬性字段,例如:

      select financial_product_config_id as financialProductConfigId

2、不用resultType了,改用resultMap把下劃線字段和駝峯字段對應上;

3、啓用Mybatis的mapUnderscoreToCamelCasetrue,這樣就可以實現數據庫下劃線字段到POJO類駝峯形式的自動映射了。

(PS:總共沒寫幾篇好博客,還被抄襲到別的平臺了,百度搜索關鍵詞還比我的原創靠前,嗚嗚嗚。還是谷歌良心,原創的還在前面)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章