1. 程式人生 > >Mybatis 當實體屬性與資料庫欄位不一致時的解決方案

Mybatis 當實體屬性與資料庫欄位不一致時的解決方案

使用Mybatis的時候,Mybatis根據資料庫的欄位找到對應實體類的屬性,通過set方法對屬性進行注入。
我們可以對實體類的set方法進行測試,測試如下:
這裡寫圖片描述
執行結果如下:
這裡寫圖片描述
說明:Mybatis會根據相同的屬性和欄位名通過set方法進行注入

那如果實體類的屬性名和資料庫的欄位名不相同呢?

我們改動實體類的屬性名,如下:
這裡寫圖片描述

再次執行,結果如下:
這裡寫圖片描述

可以發現,沒有通過set方法進行注入,而且user物件的userName的值為NULL,說明Mybatis預設下的確是通過相同的欄位名和屬性名進行注入。
那如果我們不想使用和資料庫相同的欄位名作為實體屬性名該怎麼做呢?

方法一:通過修改sql語句

修改對映檔案中的sql語句:
這裡寫圖片描述
測試結果:
這裡寫圖片描述
說明:可以發現Mybatis是根據查詢出來的欄位名去找實體類相對的屬性去注入。

方法二:新增關聯對映

在對映檔案中加入關聯對映,如下:
這裡寫圖片描述

注意:
這裡寫圖片描述

注意:
這裡寫圖片描述

修改掉之前的sql語句
這裡寫圖片描述

測試結果如下:
這裡寫圖片描述

兩種方法都可以解決實體屬性和資料庫欄位不一致的問題,不過一般都是使用第二種,通過新增關聯對映來解決該問題。