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

@杜福忠 好的 谢谢