我的项目是多数据库连接的需求。同时,多数据库连接是根据当前登录用户的不同,去连接不同的数据库(数据库里的表和表结构都是一样的,只是为了实现不同的用户的数据进行分库保存)。所以我在一个BaseController里顶一个一个getDb()方法,这个方法里根据当前登录用户返回一个数据库配置名称方便Db.use(configName)里使用。我就是通过Db.use(getDb())来实现不同的登录用户访问不同的数据库的。
现在问题来了:
如果在一个controller的方法前面使用
@Before(Tx.class)
来实现声明是事务,因为数据默认这个注解只能针对主数据库连接实现事务回滚,所以,就需要在这个注解前面使用
@TxConfig("otherConfigName")
但因为我是通过自定义的getDb()获得当前登录用户使用的数据库连接的,所以这里该怎么办呢?
只能在controller方法里使用Db.use(getDb()).tx()这种方式实现事务了吗?
如果使用Db.use(getDb()).tx()实现事务,那是不是中间某一步更新数据库失败,在return false之前,先执行一个renderJson向前台返回一个失败的信息?
项目:JFinal