您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么用SimpleFramework框架實現數據訪問”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Simple數據訪問層基于Spring JDBC。
Simple數據訪問層的核心概念為“實體管理器”,所有對數據的訪問都是通過不同的“實體管理器”產生的,這使得Simple對數據的訪問更加簡單、一致、也更為安全。
Simple提供了三種“實體管理器”,分別為:
表實體管理器
具有緩存(或分布式緩存)的表實體管理器
查詢實體管理器
表實體管理器
表實體管理器提供了對單張物理表的基本操作(select,insert,update、delete),可以通過如下方式獲取表實體管理器:
ITableEntityManager tem = DataObjectManagerFactory.getTableEntityManager(dataSource, new Table("simple_test", "id"));
下面演示一些通過ITableEntityManager操作表數據的例子:
查詢id等于1的單行記錄
Map data = tem.queryForMap(new UniqueValue(1)); 或則 TestBean bean = tem.queryForObject(new UniqueValue(1), TestBean.class);
查詢id大于1的多行記錄
IQueryEntitySet<Map> qs = tem.query(new ExpressionValue("id>1")); 或則 IQueryEntitySet<TestBean> qs2 = tem.query(new ExpressionValue("id>1", TestBean.class));
插入id等于2的記錄
Map data2 = new HashMap(); data2.put("id", 2); data2.put("f1", "value1"); data2.put("f2", true); tem.insert(data2); 或則 TestBean bean2 = new TestBean(); bean2.setId(2); bean2.setF1("value1"); bean2.setF2(true); tem.insert(bean2);
更新id等于2的記錄
data2.put("f1", "value1_update"); tem.update(data2); 或則 bean2.setF1("value1_update"); tem.update(bean2);
刪除id等于2的記錄
tem.delete(new ExpressionValue("id=2"));
操作多個物理表
在非事務環境下,操作多張表只需定義不同的表實體管理器:
TestBean bean = new TestBean(); bean.set… tem.insert(bean); ITableEntityManager tem2 = DataObjectManagerFactory.getTableEntityManager(dataSource, new Table("simple_test2", "id")); Test2Bean bean2 = new Test2Bean(); bean2.set… tem2.insert(bean2); …
在事務環境下,操作多張表需要定義監聽器:
tem.insertTransaction (bean, new TableEntityAdapter() { public void afterInsert(final ITableEntityManager manager, final Object object, final SQLValue sqlValue) throws EntityException { … tem2.insert(bean2); } });
具有緩存(或分布式緩存)的表實體管理器
具有緩存(或分布式緩存)的表實體管理器繼承自表實體管理器,其用法和表實體管理器一樣,區別在于查詢的結果對象,一個是從數據庫直接創建的,一個是從緩存設備中獲取的,Simple默認采用EHCahce來管理緩存。
查詢實體管理器
和表實體管理器不同,查詢實體管理器是基于SQL的,通過傳遞SQL語句來獲取結果集,并且結果集對象以Map形式存在,可以通過如下方式獲取表實體管理器:
IQueryEntityManager qem = DataObjectManagerFactory.getQueryEntityManager(dataSource);
查詢指定條件的單行或多行記錄
Map data = qem.queryForMap( new SQLValue("select * from table1 t1, table2 t2 where t1.c1=t2.c2 and t2.c3=?", new Object[] {1})); IQueryEntitySet<Map> qs = qem.query( new SQLValue("select * from table1 t1, table2 t2 where t1.c1=t2.c2"));
結果集(IQueryEntitySet)
IQueryEntitySet是一個高效、可靠的結果集,其設計準則:
有狀態信息
動態及分頁獲取
可前后滾動
可定制緩存
下面是訪問結果集的示例代碼:
TestBean bean; while((bean = qs.next()) != null) { System.out.println(bean.getId()); } qs.move(2); System.out.println(qs.next());
“怎么用SimpleFramework框架實現數據訪問”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。