1-問題
在插件生成的mapper.xml檔案中自己寫了新的sql,具體的代碼如下:
<select id="pageQuery" resultType="com.QuestionTypeEntity">
...
</select>
寫完除錯后,發現QuestionTypeEntity中typeName和createTime的值是null,其它屬性正常(有值)
2-可能的原因
回傳物體中部分屬性有值,所以整體sql語法沒問題,所以可能的原因有:
- 資料庫表中資料不全(開發時在開發環境資料變動的可能性比較大)
- xml檔案中單詞拼寫錯誤或者和資料庫中欄位不一致了(團隊其他人修改了也有可能)
- xml中標簽的用法有問題
3-分析與驗證
- 檢查對應的資料庫表和記錄后發現不是資料的問題
- 檢查拼寫確認無誤,映射的xml是插件生成在表結構未發生改變時都是一致的,所以也沒問題,(這里說下我自己檢查表結構和映射檔案是否一致的方法:表結構簡單時可以一一比對;欄位較多時可以再備份后,重新生成檔案,用集成工具的版本控制來檢查;還可以查看檔案和表的更新時間來分析)
- 最后檢查結果映射的resultType標簽,資料庫中欄位的命名多個單詞是以_隔開的而到了代碼是駝峰的方式,resultType不能指定具體的屬性映射,必需完全一致才能映射
4-解決方法
- 將resultType換成resultMap(推薦)
- 將對應的entity中的屬性和資料庫表中的列取的完全一致(不推薦,命名規范不同,也不應該)
5-總結
在開發程序中,因為資料庫資料本身的不穩定性,所以當出現部分屬性缺失時,可以優先考慮和檢查是否資料不完整造成的,之后在考慮代碼和組態檔的問題,
題外話
本文的目錄結構也是我解決問題的思考方式,覺得不錯的話可以借鑒一下,最后歡迎點贊,評論,收藏和轉發,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/171442.html
標籤:其他
上一篇:我用LR12打開fiddler抓取的HTTPS的.saz檔案,LR沒有生成腳本,內容為空,這是怎么回事呢,有沒有什么解決的辦法?求大神解惑
