我是靠谱客的博主 多情老鼠,最近开发中收集的这篇文章主要介绍记录一下JFinal 在controller 添加事务处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

controller添加事务;

@Before(value = { ErrorInterceptor.class, Tx.class })
前面是拦截器处理自定义抛异常 拦截器把错误信息显示到页面
这种事务的写法 如果代码加了try 事务是不起作用的
必须手动抛异常
public class XXController extends BaseMsgController {}
刚开始 我写成了
@Before(Tx.class)
不管怎么弄都不好使, 这种写法是添加到方法上的


自定义抛异常代码: 下面catch里面 不手动抛异常 事务是不会回滚的   如果是在方法上面加 @Before...则不用手动抛 如果是在类上面整体加的需要手动抛异常


try {
order.update();
reVo = new ReVo(order);
} catch (Exception e) {
logger.info(e.getMessage());
Map<String, Object> map = new HashMap<String, Object>();
map.put("msg", "网络异常请刷新重试!");
UnifyThrowEcxp.throwExcp(e, map);
}


异常处理类:

public class UnifyThrowEcxp {
/**
* 统一抛异常- maps里面可自定义异常参数
*/
public static void throwExcp(Exception e, Map<String, Object> maps) {
Map<String, String> map = new HashMap<String, String>();
map.put("msg", e.getMessage());
map.put("text", e.getMessage());
if (!maps.isEmpty()) {
map.put("errMsg", JSONObject.toJSONString(maps));
}
throw new RuntimeException(JSONObject.toJSONString(map));
}
}

拦截器错误处理: 这里只是简单的 处理了一下 直接把错误信息render到了页面

public class ErrorInterceptor implements Interceptor {
public void intercept(Invocation ai) {
try {
ai.invoke();
} catch (Exception e) {
JSONObject jo = JSONObject.parseObject(e.getMessage());
ai.getController().renderJson(jo.toJSONString());
}
}
}


运行结果:

手动抛错调用的代码:  如果不添加自定义错误信息 就直接传一个 空的map就行


Map<String, Object> map = new HashMap<String, Object>();
map.put("msg", "测试测试测试!");
UnifyThrowEcxp.throwExcp(e, map);

菜鸟发帖 大神勿喷  纯属记录一下过程  


 

最后

以上就是多情老鼠为你收集整理的记录一下JFinal 在controller 添加事务处理的全部内容,希望文章能够帮你解决记录一下JFinal 在controller 添加事务处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(77)

评论列表共有 0 条评论

立即
投稿
返回
顶部