封裝這個sql自動生成的類庫目的是,之前項目數據庫中的數據表字段非常多,本人既不喜歡寫存儲過程,又厭煩這些繁多的數據表字段,經常在寫T-SQL語句的時候,忘記都有哪些字段,遇到多次后感覺心很累。并且蛋疼的是數據庫的操作頻繁而且還不能略過。
所以本著與其每次都痛苦不如只痛苦一次的原則,我這幾天封裝了這樣的項目給自己用,連同事也不給。
這個東西不干別的,就是用來生成日常開發所需的SQL語句,以及將執行結果封裝成泛型集合列表。
還有項目是基于.NET 寫的,數據庫是SQLserver 2016。
項目和使用方法介紹
目前該項目還是第一個版本,有一些功能實現起來還是不太靈活和嚴謹,沒辦法自己也懶得寫,只好將就著用吧。這里每一個項目做一個簡單的介紹:
- Attributes類庫項目:特性標記類庫,根據該標記生成Sql語句;
- DBProcess類庫項目:對外調用實現功能項目;
- Modll類庫項目:模型實體項目;
- OtherToolLib類庫項目:底層苦力類庫,承載具體實現;
- WebSite1網站項目:這個就沒有太多要求,純html網頁都是可以得。
由于項目涉及的實用場景比較多,這里我就舉一個查詢學生名單的案例。
1):在模型類庫中添加實體類:
2):創建對應數據庫表:
測試的時候,字段少點就少點,我也實在是懶得寫了,其實無論有多少個字段都無所謂的。
3):模型類添加特性標記:
特性標記有好幾種,大體上分為類標記和屬性標記,都是用來標記對應的數據表名稱和數據表的字段名稱。
務必要和數據表對應起來,也就是名字要寫對。
剩下的join、分頁、查找之類的操作都由系統完成。
4):調用方法:
框架在設計的時候,唯一遵循的核心思想就是:不管你內部實現起來怎么惡心,我調用的時候一定要簡單。
圖有點太大了,還好基本不影響查看。
這里實現了兩個功能:一個是數據庫(student數據表)查詢,一個是插入新數據到student數據表中。
之前說到對于數據表沒有要求,主要的支撐點是泛型技術的運用。
有一個注意點:分頁查詢的時候,需要我們自定義一個Page對象,而不是用數值參數來傳遞。
調用方法的時候,我們需要先構建一個分頁模型對象,這個數據來源基本上是前端傳遞來的相關數據,那么應該顯示第幾頁由系統進行計算。
當然我這里只是傳遞了一個匿名的分頁對象,這么做,系統會默認只顯示第一頁的內容,也就是第一頁,20個項目數據。
運行結果
沒有制作網頁,這里只貼上斷點輸出的sql結果,sql語句對了,剩下的數據庫操作基本上就能完成。
1): 帶有where條件SQL
2): 分頁查詢SQL
3):插入數據庫表
按照正常的項目流程來說,數據表Key鍵應該是自增的,也就是不在sql語句里面進行指定,然而本例數據表設計有缺陷,我沒有指定Key自增公式,將就看一下吧,只需要在模型類的自增主鍵屬性上面加上[NonInsertAttribute(true)]這樣的特性就能自動識別在生成插入語句的時候,略過該屬性對應的數據庫字段。
涉及的一些基礎技術
本框架其實也沒設計什么高深的技術,無非就是字符串的拼接操作。如果有,可能也就是下面提到的這些點:
- Attribute特性;
- 反射;
- 泛型;
- 委托。
本項目還不太完善,但是針對數據庫增刪改查需求還是可以減少相當一部分的工作量。
總的來說想要實現不同的sql語句組合,關鍵點在于Attribute特性類的標記要使用正確,當然有一些SQL沒有自己寫來的靈活和方便,如何選擇就在于我們具體的項目需求。
每天擠公交車已經很煩了,總得在工作上讓自己輕松點。