EOS中怎样编写执行多条sql的运算逻辑
来源:互联网 发布:人工智能传感器概念股 编辑:程序博客网 时间:2024/06/05 13:35
阅读原文
通常一个业务操作会涉及多张数据库表,这就要求方法的实现本身就拥有事务功能以保证ACID,而不能完全靠方法调用者保证一定会在事务上下文中调用该方法。并且还需要考虑到方法内部的事务可以加入到外部事务中。
下面这个运算逻辑介绍如何在方法里使用一个事务。executeSqlArray()也在DAOTest.java中。
/**
* 执行多条sql.
*
* @param dsName
* 数据源的名字.
* @param sqls
* 要执行的sql数组.
*/
@Bizlet
(value =
"执行多条sql"
, params = {
@BizletParam
(index =
0
, defaultValue =
"default"
, type = CONSTANT, paramAlias=
"ds"
),
@BizletParam
(index =
1
, paramAlias=
"sqls"
) })
public
static
void
executeSqlArray(String dsName, String[] sqls) {
if
(dsName ==
null
|| dsName.length() ==
0
)
dsName =
"default"
;
ITransactionManager txManager = TransactionManagerFactory
.getTransactionManager();
txManager.begin(ITransactionDefinition.PROPAGATION_REQUIRED,
ITransactionDefinition.ISOLATION_DEFAULT);
Connection conn = ConnectionHelper
.getCurrentContributionConnection(dsName);
Statement stmt =
null
;
try
{
stmt = conn.createStatement();
for
(String sql : sqls) {
stmt.execute(sql);
}
close(stmt);
close(conn);
txManager.commit();
}
catch
(Throwable e) {
close(stmt);
close(conn);
txManager.rollback();
throw
new
RuntimeException(e);
}
}
对比执行单条sql的运算逻辑executeSql(),可以发现executeSqlArray()中主要是多了ITransactionManager txManager,以及关闭Connection的位置不同。
ITransactionManager是EOS提供的事务管理器,事务开始时指明了事务传播方式和事务隔离级别。
- 事务传播方式是ITransactionDefinition.PROPAGATION_REQUIRED,说明了如果调用该运算逻辑的外部没有事务就会新启动一个事务,如果外部已经有事务,该方法就加入外部的事务;
- 事物隔离级别是ITransactionDefinition.ISOLATION_DEFAULT,说明使用默认的隔离级别。
关于事务的更详细说明请参见《EOS基础参考手册》的"事务管理"部分。
注意
- 获取连接一定要在事务begin之后;
- 关闭连接一定要在事物commit/rollback之前。
0 0
- EOS中怎样编写执行多条sql的运算逻辑
- 普元EOS简单运算逻辑的编写
- Oracle中怎样一次执行多条sql语句
- EOS中拼SQL语句的问题
- 多个EOS系统之间怎样通过http方式访问EOS服务(逻辑流和SCA服务)
- 如何在EOS中运算逻辑中获取session和request以及application对象
- mybatis中执行多条sql
- 在oracle中在两个整型值之间执行按位逻辑与运算的运算符是什么?类似sql中的
- SqlServer中Sql语句的逻辑执行顺序
- SqlServer中Sql语句的逻辑执行顺序
- * 执行多条更新的Sql语句
- FLex中逻辑的编写
- EOS中使用拦截器将命名SQL执行过程打印到控制台
- EOS、BPS怎样进行应用的部署
- JAVA中处理事务的程序--多条更新SQL语句的执行(包括回滚) .
- JAVA中处理事务的程序--多条更新SQL语句的执行(包括回滚)
- JAVA中处理事务的程序--多条更新SQL语句的执行(包括回滚)
- 怎样在EOS中配置与数据库的自动重连
- 节流函数
- ubuntu安装软件依赖包错误
- C#中的Ref参数和Out参数
- oracle 创建.bat文件执行.sql语句 SP2-0310
- SpringCloud关于@FeignClient和Hystrix集成对http线程池监控问题
- EOS中怎样编写执行多条sql的运算逻辑
- 金典——判断直线相交
- Java 访问修饰符
- R, Groovy
- 最短路 Dijkstra
- 三个水杯(bfs)
- springmvc拦截器配置
- android 腾讯x5内核 浏览器
- 画圆