天天看點

bboss預編譯批處理api使用介紹

bboss預編譯批處理功能能夠非常友善地完成對資料的批量插入、批量删除、批量更新操作。所謂批量操作就是一次向資料庫中執行多條記錄操作,bboss批量處理操作全部采用預編譯方式執行,執行效率非常不錯。本文詳細介紹bboss持久層架構中批量處理操作的api及使用執行個體。切入正題。

1.相關元件

com.frameworkset.sqlexecutor.SQLExecutor-所有的api都是靜态方法,直接操作原始sql語句,所有的方法都可以指定操作的資料源,也可以不指定(這樣會在poolman.xml檔案中的第一個資料源上執行對應的sql)

com.frameworkset.sqlexecutor.ConfigSQLExecutor--所有的api都是執行個體方法,一個ConfigSQLExecutor對象執行個體必須以一個sql配置檔案路徑作為參數的構造函數來執行個體化;執行個體的所有方法不能直接使用sql語句,隻能指定一個配置sql的名稱,這個名稱對應sql配置檔案中的一條sql語句;ConfigSQLExecutor中所有的方法都可以指定操作的資料源,也可以不指定(這樣會在poolman.xml檔案中的第一個資料源上執行對應的sql)。

2.批量插入操作

api

SQLExecutor.insertBeans(sql,beans);
SQLExecutor.insertBeans(dbname,sql,beans);

ConfigSQLExecutor.insertBeans(sqlname,beans);
ConfigSQLExecutor.insertBeans(dbname,sqlname,beans);      

使用執行個體-以SQLExecutor為例

public void batchadd(List<TestBean> newdatas)
	{				
		//sql中的變量對應TestBean中的屬性名稱,必須要有相應的get/set方法,架構會自動将其轉換為預編譯占位符的sql語句
		String sql = "insert into LISTBEAN(ID,FIELDNAME,FIELDLABLE,FIELDTYPE,SORTORDER," +
				"ISPRIMARYKEY,REQUIRED,FIELDLENGTH,ISVALIDATED) " +
				"values(#[id],#[fieldName],#[fieldLable],#[fieldType],#[sortorder]," +
				"#[isprimaryKey],#[required],#[fieldLength],#[isvalidated])";
        //SQLExecutor.insertBeans(sql,newdatas);//不帶資料源的方法
		SQLExecutor.insertBeans("testds",//資料源
		                        sql,//資料庫sql語句
		                        newdatas//批量插入的對象記錄集
		                        );
	}      

3.批量更新操作

SQLExecutor.updateBeans(sql,beans);
SQLExecutor.updateBeans(dbname,sql,beans);

ConfigSQLExecutor.updateBeans(sqlname,beans);
ConfigSQLExecutor.updateBeans(dbname,sqlname,beans);      
public void batchadd(List<TestBean> updatedatas)
{
       sql ="update LISTBEAN set FIELDNAME=#[fieldName] where ID=#[id]"; 
                  //SQLExecutor.updateBeans(sql,updatedatas);

		SQLExecutor.updateBeans("testds",sql,updatedatas);
}
      

4.批量删除操作

SQLExecutor.deleteBeans(sql,beans);
SQLExecutor.deleteBeans(dbname,sql,beans);
ConfigSQLExecutor.deleteBeans(sqlname,beans);
ConfigSQLExecutor.deleteBeans(dsname,sqlname,beans);      
public void batchadd(List<TestBean> updatedatas)
{
       sql ="delete  from LISTBEAN where ID=#[id]";   
       //SQLExecutor.deleteBeans(sql,beans);
       SQLExecutor.deleteBeans("mysql",sql,beans);
}      

到此bboss中三種典型的批量處理操作的api及使用執行個體就介紹完了,至于poolman.xml中配置資料源請參考文章:

http://yin-bp.iteye.com/blog/352599

ConfigSQLExecutor元件的更詳細的使用執行個體請參考以下文章:

http://yin-bp.iteye.com/blog/1112997

SQLExecutor元件的更詳細的使用執行個體請參考以下文章:

http://yin-bp.iteye.com/blog/1035991

這裡說明的都是單條sql語句的預編譯批處理操作,還可以參考以下多條sql語句同時進行預編譯批處理的執行個體:

https://github.com/bbossgroups/bbossgroups-3.5/blob/master/bboss-persistent/test/com/frameworkset/common/TestPreparedBatch.java