|
本帖最后由 ecoolper 于 2012-11-15 13:10 编辑
【管理员请加精】在UI层怎么把存储过程action、sql更新语句action、标准action放到同一个事务中
这里有3点需要注意
1、action的java代码的Connection 连接必须用 ModelUtils.getConnectionInTransaction 得到,
2、bizDate组件的saveData( callback, useTrans, ignoreInvalid)
注意第二个参数,
useTrans
{boolean} 使用事务,批提交,默认true,
默认是ture是一般不需要我们关心,但最好知道
3、签订UI层调用必须包裹在
justep.Request.beginBatch()
//这里是调用action、bizData保存的具体代码
justep.Request.endBatch
具体代码如下:
1【存储过程action代码】:
public static void proc_Report(String fCompanyCode,String fDate) throws Exception {
Connection conn = ModelUtils.getConnectionInTransaction("datamodel");
CallableStatement proc =null;
proc = conn.prepareCall("{ call proc_Report_Q(?,?,?) }");
//赋值参数
proc.setString(1, fCompanyCode); //日期
proc.setString(2, fDate); //空值不处理
String message ="";
proc.setString(3, message); //空值不处理
proc.execute();
}
2【sql更新语句action】
public static void updateSQL(String fCompanyCode,String fDate) throws Exception {
写法1:直接用KSQL、SQL类的方法,
KSQL.executeUpdate(String ksql, Map varMap, String dataModel, com.justep.model.Model fnModel) ;//KSQL更新数据库
SQL.executeUpdate(String ksql, Map varMap, String dataModel, com.justep.model.Model fnModel) ///SQL类更新数据库
写法2:用标准的jdbc方式
Connection conn = ModelUtils.getConnectionInTransaction("datamodel");
Statement st = conn.createStatement();
boolean result = st.execute(" 这是是具体的sql语句 ");
}
2【UI层代码】
justep.Request.beginBatch();//批操作开始,可以无限嵌套
//调用存储过程proc_ReportAction。。。
var options = {};
var param = new justep.Request.ActionParam();
param.setString('fCompanyCode', Definition.getValue("fCompanyCode"));
param.setString('fDate', Definition.getValue("fDate"));
options.parameters = param;
options.action = "proc_ReportAction";
var result = justep.Request.sendBizRequest2(options);
//调用sql语句更新数据库的action,updateSQLAction。。。
var options = {};
var param = new justep.Request.ActionParam();
param.setString('fCompanyCode', Definition.getValue("fCompanyCode"));
options.parameters = param;
options.action = "proc_updateSQLAction";
var result = justep.Request.sendBizRequest2(options);
//这里是调用action、bizData保存的具体代码
justep.xbl("dataMain").saveData();
justep.Request.endBatch//批操作结束
|
|