輕鬆搞定資料訪問層

2021-04-17 01:04:26 字數 2645 閱讀 9980

下面實現的方法,可以把你從sql的add,delete,update,select的重複勞動解脫出來

1。實體類2。訪問類

現在以下表為例tblperson(perid,pername,pergender,perold,pernation)

實體類person---------idnamegenderoldnation

訪問基類dataoper------------shared deleteshared addshared updateshared select

訪問類personoper:dataoper--------------------shared getallshared getpersonbyidshared getpersonbynameshared get......

將資料庫表的資訊匯入到db.xml檔案中根據db.xml檔案生成實體類例如上面的tblperson表對應的db.xml中的乙個表如下name   dbname   key   seed    type--------------------------------------id        perid         1        1          integername   pername    0        0          stringgender pergender  0        0          booleanold       perold       0        0          integernation  pernation   0        0          string

將從資料庫返回的dataset轉換成實體類,如果用一般方式寫的話:ds=cmd.execute("select * from tblperson where id=1")dim p as new personp.id=ctype(ds.tables(0).rows(0).item("perid"),integer)p.name=...p.gender=...p.old=...p.nation=...一張表的轉換還好辦,那麼如果又幾十張表效率顯得地下了

這裡又另外一種通用的方法,利用.net提供的反射功能!.net提供的反射功能可以在知道類方法或屬性的名稱的情況下,動態訪問類的方法。知道怎麼做了嗎?前面我們有乙個從資料庫對應的db.xml資料庫架構檔案這個檔案和實體類的字段一一對應所以我們只要遍歷這個架構檔案,利用反射,就能輕鬆實現上述的賦值了讓我們再看看訪問基類dataoper--------------delete(o as object)add(o as object)update(o as object)

選擇add(o as object)為例說明public sub add(o as object)    dim type as string=o.gettype.tostring ' 得到傳進來的物件的型別    ... ' 物件型別的字串和剛才那個xml架構檔案中表的名稱一一對映    dim schematablename as string=getschematablename(type) ' 取得需要操作的表的名稱 及從 person->tblperson    ' 開啟資料庫架構檔案    dim dsschema as new dataset("db.xml")        dim sql as string="insert into " & schematablename     dim r as datarow    for each r in dsschema.tables(schematablename)        ' 在這裡操作上面的sql語句,值的部分利用反射從o中取得,建議寫乙個專門身成特定物件特定操作的sql語句的類        ' 處理一些特殊情況,如主鍵,自動增加值欄位等        ' 如果在資料庫架構檔案中儲存更多的架構資訊,如最大值等,還可以完成一些資料驗證之類的操作 ...    next    sqlhelper.excute(connectionstring,...text,sql)end sub

delete/update的通用方法類似

這樣,如果你要新增乙個person的話可以這樣dim p as new personp.name="hahasoft"p.gender=1p.old=20...personoper.add(p) ' 從dataoper繼承的方法,也可以這樣寫:dataoper.add(p)

如果要新增乙個book 的話,可以這樣dim b as new bookb.isbn=b.name=...bookoper.add(b)

怎麼樣,是不是很通用?這樣寫成乙個通用類,可以完成所有的實體類的add/update/delete操作要注意的是,db.xml資料庫架構檔案很重要

通用實體類操作完成了,下面是通用的 select 方法以前在csdn上看到過這樣的文章:personoper.keys("name")="hahasoft"personoper.keys("gender")=1dim p as new person=personoper.select()這樣就能返回相應的person的實體類也可以變相完成一些方法:如getpersonbyid(id)getpersonbyname()......

後來苦想一陣,終於實現了.(待續...)

注:(這裡實現的單錶的o-r對映,如果對有關聯的表的話,只要宣告乙個如 aladdress as arraylist 的成員就可以了,當然還涉及一些資料

晚期填充以提高效率的技巧,在這裡就不詳細介紹了)

SpringBoot 輕鬆搞定資料驗證 二

正則可讀性不好 正則門檻較高,很多開發者並不會編寫正規表示式 author ray date 2018 7 4 0004 自定義註解 field 約束相關的屬性 parameter 約束相關的引數 target 約束註解應用的目標元素型別 retention retentionpolicy.runt...

五步教你輕鬆搞定資料中心容量規劃問題

無論使用大型機或雲計算,資料中心容量規劃依然嚴峻,要確保擁有業務所需的足夠it資源。資料中心管理者面臨著相同的挑戰 業務需要更多的計算資源,但同時也希望降低能耗,冷卻和其他設施費用。當走到評估是否需要進行資料中心這步時,一步一步的規劃,是省下一大筆開支的好方法。資料中心容量規劃是朝著正確方向邁出的重...

資料分析選它就對了,只需三步輕鬆搞定資料視覺化分析

隨時時代的不斷發展,雲計算,大資料,人工智慧,物聯網,5g這些新興行業不斷演進,快速的決策與行動能力已經成為每一家企業的必備能力,但是往往資料分析相關的採購成本高,鏈條長,技術複雜度高,讓企業遙不可及,針對這些問題,今天就給大家分享一款簡單易用的大資料視覺化分析工具,讓每家企業都能擁有資料洞察能力。...