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的mapUnderscoreToCamelCase爲true,這樣就可以實現數據庫下劃線字段到POJO類駝峯形式的自動映射了。
(PS:總共沒寫幾篇好博客,還被抄襲到別的平臺了,百度搜索關鍵詞還比我的原創靠前,嗚嗚嗚。還是谷歌良心,原創的還在前面)