事务控制方法
事务控制方法
void doTransaction(TransactionCallback callback)
通过函数接口TransactionCallback执行数据库操作,保证所有操作都在同一个事务控制下,示例如下:
Model model1 = new Model();
Model model2 = new Model();
Model.doTransaction((TransactionStatus s)->{
model1.create();
model2.create();
});
此时model1的插入和model2的插入记录在一个事务控制中,如果任何一个语句抛出异常了,都会导致整个事务回滚.
也可以通过TransactionStatus.setRollbackOnly()
设置回滚.
参数:
- callback:事务控制回调对象,是函数接口TransactionCallback的实例对象,在
callback.doInTransaction()
内部实现的业务逻辑都会受事务控制
static <T> T doTransaction(TransactionCallbackWithResult<T> callback)
和void doTransaction(TransactionCallback callback)
相似,区别在于这个接口可以返回值.
参数:
- callback:事务控制回调对象,是函数接口TransactionCallbackWithResult的实例对象,在
callback.doInTransaction()
内部实现的业务逻辑都会受事务控制,并且callback.doInTransaction()
的返回值将直接作为这个接口的返回值.
结果:
- callback的返回结果.
void doTransaction(TransactionCallback callback, boolean requiresNew)
和void doTransaction(TransactionCallback callback)
相似,区别参数requiresNew
,这个参数表示是否使用目前生存的事务对象还是新建一个事务对象.
void doTransaction(TransactionCallback callback)
相当于void doTransaction(TransactionCallback callback, false)
参数:
- callback:事务控制回调对象,是函数接口TransactionCallbackWithResult的实例对象,在
callback.doInTransaction()
内部实现的业务逻辑都会受事务控制,并且callback.doInTransaction()
的返回值将直接作为这个接口的返回值. - requiresNew:是否创建一个新的事务对象,true表示创建新的事务对象,false表示不创建新的事务对象
<T> T doTransaction(TransactionCallbackWithResult<T> callback, boolean requiresNew)
和void doTransaction(TransactionCallback callback, boolean requiresNew)
相似,区别在于这个接口可以返回值.
参数:
- callback:事务控制回调对象,是函数接口TransactionCallbackWithResult的实例对象,在
callback.doInTransaction()
内部实现的业务逻辑都会受事务控制,并且callback.doInTransaction()
的返回值将直接作为这个接口的返回值. - requiresNew:是否创建一个新的事务对象,true表示创建新的事务对象,false表示不创建新的事务对象
结果:
- callback的返回结果.