av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

SimpleFramework框架高級特性之數(shù)據(jù)訪問

Simple數(shù)據(jù)訪問層基于Spring JDBC。

Simple數(shù)據(jù)訪問層的核心概念為“實體管理器”,所有對數(shù)據(jù)的訪問都是通過不同的“實體管理器”產生的,這使得Simple對數(shù)據(jù)的訪問更加簡單、一致、也更為安全。

Simple提供了三種“實體管理器”,分別為:

表實體管理器

具有緩存(或分布式緩存)的表實體管理器

查詢實體管理器

表實體管理器

表實體管理器提供了對單張物理表的基本操作(select,insert,update、delete),可以通過如下方式獲取表實體管理器:

 
 
 
  1. ITableEntityManager tem =   
  2.     DataObjectManagerFactory.getTableEntityManager(dataSource, new Table("simple_test", "id")); 

 

下面演示一些通過ITableEntityManager操作表數(shù)據(jù)的例子:

查詢id等于1的單行記錄

 
 
 
  1. Map data = tem.queryForMap(new UniqueValue(1));  
  2. 或則  
  3. TestBean bean = tem.queryForObject(new UniqueValue(1), TestBean.class);  

 

查詢id大于1的多行記錄

 
 
 
  1. IQueryEntitySet qs = tem.query(new ExpressionValue("id>1"));  
  2. 或則  
  3. IQueryEntitySet qs2 = tem.query(new ExpressionValue("id>1", TestBean.class));  

 

插入id等于2的記錄

 
 
 
  1. Map data2 = new HashMap();  
  2. data2.put("id", 2);  
  3. data2.put("f1", "value1");  
  4. data2.put("f2", true);  
  5. tem.insert(data2);   
  6. 或則  
  7. TestBean bean2 = new TestBean();  
  8. bean2.setId(2);  
  9. bean2.setF1("value1");  
  10. bean2.setF2(true);  
  11. tem.insert(bean2);  

 更新id等于2的記錄

 
 
 
  1. data2.put("f1", "value1_update");  
  2. tem.update(data2);  
  3. 或則  
  4. bean2.setF1("value1_update");  
  5. tem.update(bean2);  

刪除id等于2的記錄

 
 
 
  1. tem.delete(new ExpressionValue("id=2")); 

操作多個物理表

在非事務環(huán)境下,操作多張表只需定義不同的表實體管理器:

 
 
 
  1. TestBean bean = new TestBean();  
  2. bean.set…  
  3. tem.insert(bean);  
  4. ITableEntityManager tem2 =  
  5.     DataObjectManagerFactory.getTableEntityManager(dataSource, new Table("simple_test2", "id"));  
  6. Test2Bean bean2 = new Test2Bean();  
  7. bean2.set…  
  8. tem2.insert(bean2);  
  9. …  

 

在事務環(huán)境下,操作多張表需要定義監(jiān)聽器:

 
 
 
  1. tem.insertTransaction (bean, new TableEntityAdapter() {  
  2.     public void afterInsert(final ITableEntityManager manager,   
  3.                 final Object object, final SQLValue sqlValue) throws EntityException {  
  4.         …  
  5.         tem2.insert(bean2);  
  6.     }  
  7. });  

 

具有緩存(或分布式緩存)的表實體管理器

具有緩存(或分布式緩存)的表實體管理器繼承自表實體管理器,其用法和表實體管理器一樣,區(qū)別在于查詢的結果對象,一個是從數(shù)據(jù)庫直接創(chuàng)建的,一個是從緩存設備中獲取的,Simple默認采用EHCahce來管理緩存。

查詢實體管理器

和表實體管理器不同,查詢實體管理器是基于SQL的,通過傳遞SQL語句來獲取結果集,并且結果集對象以Map形式存在,可以通過如下方式獲取表實體管理器:

 
 
 
  1. IQueryEntityManager qem = DataObjectManagerFactory.getQueryEntityManager(dataSource); 

查詢指定條件的單行或多行記錄

 
 
 
  1. Map data = qem.queryForMap(  
  2.     new SQLValue("select * from table1 t1, table2 t2 where t1.c1=t2.c2 and t2.c3=?",   
  3.     new Object[] {1}));  
  4.  
  5. IQueryEntitySet qs = qem.query(  
  6.     new SQLValue("select * from table1 t1, table2 t2 where t1.c1=t2.c2")); 

結果集(IQueryEntitySet)

IQueryEntitySet是一個高效、可靠的結果集,其設計準則:

有狀態(tài)信息

動態(tài)及分頁獲取

可前后滾動

可定制緩存

下面是訪問結果集的示例代碼:

 
 
 
  1. TestBean bean;  
  2. while((bean = qs.next()) != null) {  
  3.     System.out.println(bean.getId());  
  4. }  
  5. qs.move(2);  
  6. System.out.println(qs.next());  

本文標題:SimpleFramework框架高級特性之數(shù)據(jù)訪問
本文來源:http://uogjgqi.cn/article/djpsddp.html
掃二維碼與項目經理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流