Mybatis 當實體屬性與資料庫欄位不一致時的解決方案
使用Mybatis的時候,Mybatis根據資料庫的欄位找到對應實體類的屬性,通過set方法對屬性進行注入。
我們可以對實體類的set方法進行測試,測試如下:
執行結果如下:
說明:Mybatis會根據相同的屬性和欄位名通過set方法進行注入
那如果實體類的屬性名和資料庫的欄位名不相同呢?
我們改動實體類的屬性名,如下:
再次執行,結果如下:
可以發現,沒有通過set方法進行注入,而且user物件的userName的值為NULL,說明Mybatis預設下的確是通過相同的欄位名和屬性名進行注入。
那如果我們不想使用和資料庫相同的欄位名作為實體屬性名該怎麼做呢?
方法一:通過修改sql語句
修改對映檔案中的sql語句:
測試結果:
說明:可以發現Mybatis是根據查詢出來的欄位名去找實體類相對的屬性去注入。
方法二:新增關聯對映
在對映檔案中加入關聯對映,如下:
注意:
注意:
修改掉之前的sql語句
測試結果如下:
兩種方法都可以解決實體屬性和資料庫欄位不一致的問題,不過一般都是使用第二種,通過新增關聯對映來解決該問題。
相關推薦
Mybatis 當實體屬性與資料庫欄位不一致時的解決方案
使用Mybatis的時候,Mybatis根據資料庫的欄位找到對應實體類的屬性,通過set方法對屬性進行注入。 我們可以對實體類的set方法進行測試,測試如下: 執行結果如下: 說明:Mybatis會根據相同的屬性和欄位名通過set方法進行注入 那
MyBatis學習(四)--解決實體屬性和資料庫欄位不一致的問題
寫在前面 孤傲蒼狼的部落格:https://www.cnblogs.com/xdp-gacl/category/655890.html 程式碼中會有很多重要的註釋,請不要忽略。 前面在建立實體時,強調過一定要和資料庫列名一致。如果不一致結果是對映不到實體中的,但是資料庫和j
Mybatis中的model實體與資料庫中的欄位不一致的解決方案
mybatis的強大之處一:resultMap 場景: model: package com.lgy.model; public class User { private Integer use
用generator 根據oracle表生成java程式碼,資料庫與程式碼欄位不一致
前兩天用generator生成java程式碼時發現,生成的javabean和資料庫裡的欄位對應不上,不是少幾個就是有幾個欄位不一樣,感覺很怪異,後來發現日誌裡邊這個錶轉換成bean是日誌列印了好幾遍,所有怪事都是有原因的,我開始研究generator原始碼。 用IDEA跟蹤
[oracle] count()函式使用錯誤欄位導致的查詢失敗(聚合函式聚合欄位與分組欄位不一致)
一 錯誤的SQL語句(原始的,格式是直接從word中拷貝的,存在多個錯誤): select to_char(t.fbsj, 'YYYY') as a, count(t.fbsj) from ( select fbsj from ods_t_ky_lw where
MyBatis中五種成功對映資料庫欄位與實體類屬性不一致的解決方案
在Mybatis中,當根據某欄位查詢資料庫資訊時,如果資料庫欄位名與實體類屬性名稱不一致,查詢時,會出現賦值不上的情況,值為Null。本次將給出五種方案,其中方案三、四為推薦。例如:根據學號sno查詢學生資訊1.資料庫表student欄位名稱以及型別:2.資料庫表內容:3.實
MyBatis學習筆記-03.MyBatis中五種成功對映資料庫欄位與實體類屬性不一致的解決方案
在Mybatis中,當根據某欄位查詢資料庫資訊時,如果資料庫欄位名與實體類屬性名稱不一致,查詢時,會出現賦值不上的情況,值為Null。本次將給出五種方案,其中方案三、四為推薦。例如:根據學號sno查詢學生資訊1.資料庫表student欄位名稱以及型別:2.資料庫表內容:3.實
Mybatis框架實體類欄位與資料庫表字段不一致導致查詢該欄位的值一直為null
實體類如下所示: public class BasicInfo { private Integer basic_id; private String name; private
Mybatis-類屬性和資料庫欄位對映方式
1. 通過XML對映檔案中的resultMap<mapper namespace="data.UserMapper"> <resultMap type="data.User" id="userResultMap"> <!-
mybatis學習總結---屬性名和欄位名不一致問題
1. 查詢時使用別名,別名和屬性名保持一致 <select id="getUser" parameterType="int" resultType="com.skd.mybits.domain.User"> select id_dif id, name_dif n
jQuery easyui dataGrid 動態改變排序欄位名,一般情況下,在使用的時候,我們會點選相應欄位進行排序,這裡以JAVA為例,後端的實體類欄位有可能和資料庫的欄位不一致; 如:實體類中的
jQuery easyui dataGrid 動態改變排序欄位名,一般情況下,在使用的時候,我們會點選相應欄位進行排序,這裡以JAVA為例,後端的實體類欄位有可能和資料庫的欄位不一致; 如:實體類中的屬性為userName,前臺filed="userName"而資料庫的欄位
extjs 上傳電子錶取得表中列頭並與資料庫欄位做匹配的介面操作
var panel = Ext.create('Ext.panel.Panel', { region: 'center', flex: 1.3, title: '欄位對映', margin: '1 1 1 1', items: [
JAVA查詢資料庫讀取日期欄位與資料庫中儲存不一致問題
浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>
轉換實體類欄位不一致
package com.integralShopService.mapping; import com.account.dto.WaterAccountDto; import com.integralShopService.dto.WaterAccountSearchDto; import co
MyBatis動態傳入表名,欄位名引數的解決辦法--用於分表--表名是動態的
MyBatis動態傳入表名,欄位名引數的解決辦法--用於分表--表名是動態的 一直在使用Mybatis這個ORM框架,都是使用mybatis裡的一些常用功能。今天在專案開發中有個業務是需要限制各個使用者對某些表裡的欄位查詢以及某些欄位是否顯示,如某張表的某些欄位不讓使用者查詢到。這種情況下,就需
Mybatis插入欄位值亂碼的解決方案
1.mysql 資料庫 把 資料庫、表、欄位的字符集及整理規則改 utf8 utf-general (3* 2) 2.資料庫連線字串加?useUnicode=true&characterEncoding=utf8 3.jsp頁面所有設成utf-8 4.表
MyBatis由淺入深學習總結之二:MyBatis解決Java實體類和資料庫表字段不一致方法總結
在此,首先說明一點任何永續性框架都需要解決一個問題,那就是Java實體類的欄位一般來說基本上會與資料庫表中欄位不一致,那麼它們是如何解決的呢?咱們以Hibernate和SpringJDBC為例說明一下; 1、Hibernate中一般通過XML對映和註解的方式解決不一致問題,
error C3163: “_vsnprintf”: 屬性與以前的宣告不一致
2005專案升級為2008,出現以上錯誤。 解決辦法: 找到程式中定義vsnprintf的巨集(可能在某個被包含的標頭檔案中),這裡出現的問題的巨集原來定義為#define vsnprintf _vsnprintf。 解決辦法就是將其根據版本來決定是否註釋,原因是VC20
JPA查詢List ID相同導致 返回List與資料庫查詢結果不一致 的問題
1.統計資料的時候 查詢只返回了需要的欄位 select sum(result) result, name , from table_test group by name having class != '100001' 資料庫返回結
快取與資料庫不一致的解決方案
本文主要討論這麼幾個問題: (1)啥時候資料庫和快取中的資料會不一致 (2)不一致優化思路 (3)如何保證資料庫與快取的一致性 一、需求緣起 上一篇《快取架構設計細節二三事》(點選檢視)引起了廣泛的討論,其中有一個結論:當資料發生變化時,“先淘汰快取,再修改資