beetlsql是乙個orm框架。
據官方文件所述:比hibernete和mybatis綜合素質要強的太多。
它的核心是sqlmanager
**如下所示:
public static void main(string args) ;
sqlmanager sqlmanager = new sqlmanager(dbstyle, sqlloader, ds, nc, inters);
listlist = sqlmanager.all(user.class);
system.out.println(list);
}
解釋:
dbstyle:方言。不同的資料庫總有些不同的sql,作者做了很多的方言處理。這裡新建的是mysql
sqlloader :sql模板載入器。hibernate是完全沒有sql。mybatis是全部都是sql。而beetlsql對於一些簡單的單錶查詢已經有現成的封裝方法,可以直接使用。但專案中總會有些特殊的sql,這時候sql就要寫到sql模板裡面去。
connectionsource:這個不必說,資料來源
nameconversion:表名和類名的對映關係,以及列名和屬性名的對映關係。
官方包裡給出了三個實現:
interceptor是***,在執行sql前和sql後執行。它不能針對特殊的sql進行攔截,而是所有的sql都要攔截。本例新增了乙個debuginterceptor,當有sql執行時,會在控制台列印sql語句引數及返回值sqlmanager:核心管理器。
這裡面方法很多。
比如:public listall(classclazz)這是根據class型別返回所有的list.它是怎麼做到的呢?它拿到了class的name,然後根據nameconversion推斷出表的名字,接著就是select * from 表名了。
比如: public int insert(class<?> clazz, object paras)這是個插入方法,也是根據clazz推測出表名,然後根據paras物件的fieldname/fieldvalue轉換成
insert into 表名 (fieldname1,fieldname2,fieldname3....) values(fieldvalue1,fieldvalue2,fieldvalue3....)
這個要注意,beetsql有兩個註解:
@autoid:代表著自增id,標在pojo的id上
@assignid:代表著非自增id,標在pojo的id上
在插入表有自增id的情況下,應該使用這個:
insert(class<?> clazz, object paras, keyholder holder),這個keyholder還會返回自增id.
比如:public int updatebyid(object obj)這個是修改方法,根據object的class推測出表名,並且根據類裡帶@autoid或者@assignid的那個屬性當作id去修改。如果屬性為null,也會修改為null.如下sql語句:
update *** set aaa= 1 ,bbb =2,ccc = null where id =2
比如: public int updatetemplatebyid(object obj)sqlmanager有很多很多的方法供使用,但這些都是單錶操作,滿足不了日益增長的需要。對於特殊的sql語句,我們在下一章介紹。這個和上個差不多,只是為null的屬性不參與更新。
python基礎概念 python基礎概念
當你輸入name input 並按下回車後,python互動式命令列就在等待你的輸入了。這時,你可以輸入任意字元,然後按回車後完成輸入。要列印出name變數的內容,除了直接寫name然後按回車外,還可以用print 函式 以 開頭的語句是注釋,注釋是給人看的,可以是任意內容 整數python可以處理...
arm的基礎概念
1 什麼是arm arm advanced risc machines 是微處理器行業的一家知名企業,設計了大量高效能 廉價 耗能低的risc處理器 相關技術及軟體。技術具有效能高 成本低和能耗省的特點。適用於多種領域,比如嵌入控制 消費 教育類多 dsp和移動式應用等。arm將其技術授權給世界上許...
HID的基礎概念
前言 本文內容摘自 hid1 11.pdf 1 hid item a hid item 有main items global items local items 三種型別 hid 報告描述符就是通過利用這三種型別進行填充形成一段有效記憶體空間,儲存相關的位置資訊。b hid item 有兩種格式 s...