日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SimpleFramework框架高級(jí)特性之?dāng)?shù)據(jù)訪問

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

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

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

表實(shí)體管理器

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

查詢實(shí)體管理器

表實(shí)體管理器

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

 
 
 
  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")); 

操作多個(gè)物理表

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

 
 
 
  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. …  

 

在事務(wù)環(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. });  

 

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

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

查詢實(shí)體管理器

和表實(shí)體管理器不同,查詢實(shí)體管理器是基于SQL的,通過傳遞SQL語(yǔ)句來(lái)獲取結(jié)果集,并且結(jié)果集對(duì)象以Map形式存在,可以通過如下方式獲取表實(shí)體管理器:

 
 
 
  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")); 

結(jié)果集(IQueryEntitySet)

IQueryEntitySet是一個(gè)高效、可靠的結(jié)果集,其設(shè)計(jì)準(zhǔn)則:

有狀態(tài)信息

動(dòng)態(tài)及分頁(yè)獲取

可前后滾動(dòng)

可定制緩存

下面是訪問結(jié)果集的示例代碼:

 
 
 
  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());  

文章標(biāo)題:SimpleFramework框架高級(jí)特性之?dāng)?shù)據(jù)訪問
分享路徑:http://www.5511xx.com/article/djpsddp.html