2019-05-24 15:04
service 事务的边界正如你需求的那样,从你点击开始直到节束,无论中间有多少步
你碰到的问题,很可能是因为事务级别不够引起的,对于 mysql 来说 jfinal 比较高版本的事务级别是:
Connection.TRANSACTION_REPEATABLE_READ;
这个值是:4, 对于一般的应用是够用的
oracle 下面值是: 2
在使用事务的时候,有一件事情要特别注意,如果你是将数据库的值先读到内存,然后改这个值,再存到内存,那么事务级别是要相应提高的,例如:
int cash = Db.queryInt("select cash from account where id = ?", 123);
cash = cash + 100;
Db.update("update account set cash = ? where id = ?", cash, 123);
如果你的更新操作是用 sql 实现,直接在数据库中实现的,那么事务级别可以更低,例如:
Db.update("update account set cash = cash + 100 where id = ? ", 123);
注意区别上面两种用法,前面的用法对数据的操作是在你的应用中, 后面的用法是在 mysql 数据库中,这两种用法对事务级别的要求是不同的,前者起码要锁住 id 值为 123 的行,如果更新范围大需要锁表,这个锁行、锁表就是与事务级别有关的,事务级别越高,锁的范围就越大
2019-05-23 09:54
@柳萧然 view 是不是以 "/" 打头,专门针对 render 方法来说,与 setBaseViewPath 无关
setBaseViewPath 无论是不是以 "/" 打头都一样
2019-05-22 14:58
@scocai 看来这个 response.setCharacterEncoding(getEncoding()) 居然影响到了 content type,头一次发现这个
感谢反馈,赞
2019-05-22 14:47
@深山老枪 还要注意一个问题,jfinal undertow 不支持 JSP, 用一下 jetty-server,文档中有说过:
https://www.jfinal.com/doc/1-6
2019-05-22 14:46
@深山老枪 不对,你用的是 renderJsp , 所以不配置也是可以的
这个配置只是针对于 render , 而不是针对于 renderJsp 与 renderXxx 之类的