利用反射快速給Model實體賦
試想這樣一個業務需求:有一張合同表,由於合同涉及內容比較多所以此表比較龐大,大概有120多個欄位。現在合同每一次變更時都需要對合同原始資訊進行歸檔一次,版本號依次遞增。那麼我們就要新建一張合同歷史表,欄位跟原合同表一模一樣,此外多了一個 合同版本號 欄位。在歸檔時如何把原始合同資訊插入到合同歷史表呢?
很容易就能想到的一種解決方法:
insert into 合同歷史表(欄位1,欄位2,欄位3…………欄位120,版本號) select 欄位1,欄位2,欄位3…………欄位120,0 as 版本號 from 合同表 where 合同ID=‘xxxxxxx’
這樣當然是能實現我們的功能的,但是看到了嗎?由於表的欄位太多,導致SQL看起來很不優雅,而且欄位之間的對應很容易出問題。聯想起之前看過的 利用反射給model賦值的例子想出來下面的一個解決方法:
現在假設兩個實體class1、class2,class2只比class1多一個欄位newid,其它欄位一模一樣。簡單定義如下:
下面我們給class1賦值,然後通過反射獲取class2的屬性,迴圈把class1對應的值賦給class2,遇到class2多出的欄位我們手功處理後跳過。簡單程式碼如下:
這樣程式碼看起來稍微優雅了一些,而且針對不同的欄位我們處理起來也方便。
相關文章
- web中,利用反射給物件賦值Web反射物件賦值
- C# 可以利用反射給只讀屬性賦值嗎?C#反射賦值
- Java反射給泛型集合賦值Java反射泛型賦值
- iOS開發之使用Runtime給Model類賦值iOS賦值
- iOS開發之遍歷Model類的屬性並完善使用Runtime給Model類賦值iOS賦值
- 使用反射為特性賦值反射賦值
- 利用反射代替switch反射
- 利用 PHP 反射實現內建函式文件PHP反射函式
- 反射快速入門反射
- 反射+Class類方法_利用反射分析類的能力反射
- 利用反射機制實現依賴注入的原理反射依賴注入
- 你必須瞭解的反射——反射來實現實體驗證反射
- 如何利用隨身碟給軟體加密加密
- DIY 實現 ThinkPHP 核心框架 (十四)利用反射實現依賴注入PHP框架反射依賴注入
- C#動態執行函式:利用反射實現C#函式反射
- DIY 實現 ThinkPHP 核心框架 (十三)利用反射實現引數繫結PHP框架反射
- C#利用反射建立例項C#反射
- 打造強大的BaseModel(4):使用Swift反射Swift反射
- JAVA之反射學習3-反射獲取成員變數並賦值Java反射變數賦值
- 利用類反射模擬內省功能反射
- 自定義註解+反射 實現給註解新增功能的效果反射
- js 利用||和&&賦值小技巧JS賦值
- vue:動態給img賦值Vue賦值
- jquery 動態給table賦值jQuery賦值
- php變數賦值給jsPHP變數賦值JS
- jQuery給控制元件賦值....jQuery控制元件賦值
- 批次給控制元件賦值控制元件賦值
- JQuery給textarea取值和賦值jQuery賦值
- NHibernate利用Mindscape.NHibernateModelDesigner實現資料庫與實體之間的轉換及操作資料庫
- Taro下利用Decorator快速實現小程式分享
- 利用rsync實現快速刪除海量檔案
- 利用apidoc自動生成model文件API
- java裡面給物件賦值,慎用賦值符號(=) (轉)Java物件賦值符號
- 利用反射讀取資料庫資料反射資料庫
- Jdbc 封裝, 利用反射, 加入連線池JDBC封裝反射
- 2步打通ModelArts和Astro,實現AI應用快速落地ASTAI
- 物件屬性值賦給變數物件變數
- 把物件賦給int型變數物件變數