首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
jfinal 怎么手动提交事务
黄天霸
2018-12-05 11:23
jfinal 是在什么时候提交事务的?
我想在代码中执行到某个业务操作的时候 先手动提交下事务,因为我后面的业务是在新的线程里面处理的,不提交事务的话,这边会查不到数据
求大神们帮忙解决下
项目:
JFinal
评论区
caoxusheng
2018-12-05 13:37
文档 都不看的吗?
这里
回复
杜福忠
2018-12-05 13:44
Connection conn = Db.use().getConfig().getThreadLocalConnection();
提交
conn.commit();
回滚
conn.rollback();
注意判空
回复
杜福忠
2018-12-05 13:55
像你这样的业务 应该使用 Db.tx 事务, 把事务的 代码范围缩小返回true和false就可以了
回复
黄天霸
2018-12-05 16:50
@杜福忠
收到 感谢大神
回复
黄天霸
2018-12-05 16:52
@杜福忠
还有个问题 就是一个请求过来完成请求的时候 jfinal 是什么时候提交的事务的?在哪里提交的? 还是说 是JDBC 这边自动提交的?
回复
杜福忠
2018-12-05 17:23
@黄天霸
两种, (3.5版)
1、Db.tx 事务: DbPro.Java 的747行 利用 回调IAtom的run方法, 实现的, 回调前开起, 回调后根据结果布尔进行判断是否提交还是回滚, 源码:https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/plugin/activerecord/DbPro.java
2、声明式事务: Tx.java 利用 Interceptor拦截器的intercept方法, 原理和上面那个一样, 源码: https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/plugin/activerecord/tx/Tx.java
遇到这样的问题, 直接看源码, 代码量不多, 带着问题读源码是最快的
回复
黄天霸
2018-12-05 20:24
@杜福忠
好的 感谢 我去看看
回复
黄天霸
2018-12-05 20:27
@杜福忠
我这边代码 并没有处理事务 jfinal 是否默认就是Db.tx 事务
回复
杜福忠
2018-12-05 20:55
@黄天霸
并没有默认, 你先仔细阅读
@caoxusheng
发的那个连接, 里面讲的很清楚, 几种用法
回复
黄天霸
2018-12-06 09:20
@杜福忠
好的 谢谢
回复
发送
我要反馈
热门反馈
扫码入社