Java修道之路:JFinal一坑,事务不回滚问题

其实就是被坑了一下,哪个猿不是从坑里爬出来的呢?有个朋友说过,“有什么坑的,就记下来,下次不要被坑了”,可是,我觉得真是“一朝若被坑,永生真●难忘”,根本不用记录,呵呵。

但,这篇文章不是想描述我如何被坑的,而是为了记录一个处理问题的过程!

使用公司自己的一个eclipse插件做开发,该插件集成了JFinal框架,也不知道是哪个版本的JFinal,不过可以肯定的是2.0以前的。

写了一段业务,删除A表指定记录 -> 插入A表一条记录 -> 批量插入B表n条记录 -> 批量插入C表n条记录(记录从D表中查出),下面是伪代码:

Db.tx(new IAtom() {

	@Override
	public boolean run() throws SQLException {

		try {
			Db.update("delete from A where id = ?", id);
			Db.update("insert into A values(null,?,?)", new Object[]{param1, param2});

			// 准备参数
			Object[][] objss1 = new Object[row][3];
			for (int i = 0; i < row; i ++) {
				objss[i][0] = param3;
				objss[i][1] = param4;
				objss[i][2] = param5;
			}
			Db.batch("insert into B values(null,?,?,?)", objss1, 1000);

			// 准备参数
			Object[][] objss2 = new Object[row][1];
			for (int i = 0; i < row; i ++) {
				objss[i][0] = param6;
			}
			Db.update("insert into C select * from D where id = ?", objss2);

		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
});

继续阅读

Java修道之路:JFinal实现自动扫描Controller并设置注解的controllerkey

由于最近在研究JFinal,所以就用JFinal的框框来写例子吧。

JFinal设置Controller的访问路径是在Config的configRoute方法中设置,使用me.add(String path, Class controller),如果有多个Controller,那么需要添加多行代码!

如果Controller非常多,那么后期的更改操作将比较麻烦,所以需要自动扫描Controller,将指定的注解的属性配置到me.add方法中(这里设计为Controller添加自定义注解@PVAnnotation(path = “/visit”),path就是访问路径)。

思路:

1,根据设置的包路径获取到文件路径,使用递归得到所有的.class文件(java字节码文件),将所有的.class的Class放入一个List

2,遍历1中得到的List,通过反射判断Class有没有指定的注解,如果有就获得注解并获得对应的注解属性,如果没有就continue

继续阅读