C#及JAVA等語言的反射機制,用來靈活生成sql和調用類方法太爽了

工作這些年,辛苦收集了很多源碼,很多都是商業源碼,拿來就能用,私活利器,如有需要請點擊文章末尾的“瞭解更多”鏈接。

C#及JAVA等語言的反射機制,用來靈活生成sql和調用類方法太爽了

上一篇文章給大家詳細的講解了反射是用來幹什麼的,並演示了一個簡單的應用,點擊鏈接可以看到哦!C#及JAVA等語言的反射機制有啥用,是用鏡子反射太陽光玩麼(一)

這次我們來給大家看兩個比較稍微難點並且應用很廣泛的案例,對降低模塊之間的耦合度和提升代碼的可維護性有非常大的幫助哦!

下面看看下面這條sql,這是一個參數化的插入語句,

C#及JAVA等語言的反射機制,用來靈活生成sql和調用類方法太爽了

這是一個參數化的插入Sql,如果表字段比較少,那這麼寫還好,但是如果很多,而且表字段不固定,那麼這麼寫就不靈活了。如果每次增減列名後還要去改sql中的列名和參數就太不方便了,改動少還好,如果改動太大,比如增加了100個列,修改了50個列的名字,那就會死人的,

下面通過運用反射來動態生成Sql,請大家看看

首先聲明一個實體類Temp,注意屬性名必須與數據庫列名吻合:

C#及JAVA等語言的反射機制,用來靈活生成sql和調用類方法太爽了

再寫入兩個方法,兩個方法都差不多,都是獲取屬性後循環拼接字符串:

C#及JAVA等語言的反射機制,用來靈活生成sql和調用類方法太爽了

獲取所有屬性名稱並拼接列字符串

C#及JAVA等語言的反射機制,用來靈活生成sql和調用類方法太爽了

獲取所有屬性名稱並拼接列字符串

引用:

C#及JAVA等語言的反射機制,用來靈活生成sql和調用類方法太爽了

最後sql字符串就生成為“ Insert into Temp(UserID,UserName,Age,WorkType) Values(@UserID,@UserName,@Age,@WorkType)”

就這樣,無論怎麼改動,sql都能按需自動生成,是不是很方便呢?

工作這些年,辛苦收集了很多源碼,很多都是商業源碼,拿來就能用,私活利器,如有需要請點擊文章末尾的“瞭解更多”鏈接。


分享到:


相關文章: