java - mybatis怎么处理事务问题
本文介绍了java - mybatis怎么处理事务问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我用的mybatis是基于SqlSessionTemplate实现的,如下:
@Repository("daoSupport")
public class DaoSupport implements BaseDAO {
@Resource(name = "sqlSessionTemplate")
private SqlSessionTemplate sqlSessionTemplate;
/**
* 保存对象
* @param str
* @param obj
* @return
* @throws Exception
*/
public Object save(String str, Object obj){
return sqlSessionTemplate.insert(str, obj);
}
/**
* 批量更新
* @param str
* @param obj
* @return
* @throws Exception
*/
public Object batchSave(String str, List objs){
return sqlSessionTemplate.insert(str, objs);
}
/**
* 修改对象
* @param str
* @param obj
* @return
* @throws Exception
*/
public Object update(String str, Object obj){
Integer count=sqlSessionTemplate.update(str, obj);
@Service
public class OrderInfoService {
@Resource(name = "daoSupport")
private DaoSupport dao;
@SuppressWarnings("unchecked")
public List<PageData> getPerson() {
List<PageData> a =(List<PageData>)dao.findAllList(
"OrderInfoMapper.getOrderInfo");
return a;
}
public void save(PageData pd){
dao.save("OrderInfoMapper.saveOrderInfo", pd);
}
public void update(PageData pd){
dao.update("OrderInfoMapper.updateOrder", pd);
}
@SuppressWarnings("unchecked")
public List<PageData> list(PageData pd){
return (List<PageData>)dao.findForList("OrderInfoMapper.getOrderInfo", pd);
}
在xml文件里面写对应sql的Mapper,
我想在调用service层的方法操作数据库时,几条sql语句同时commit,其中有一条失败则全部不执行,就和jdbc那样先设置不自动commit,然后在commit那种,要在哪里配置或调用啥方法实现?
解决方案
请百度spring的事务管理
第一种,配置事务管理的规则,具体怎么写可以再百度,一两句说不清
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<aop:config>
<aop:pointcut id="interceptorPointCuts" expression="execution(* com.web..*.services..*Impl.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="interceptorPointCuts"/>
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>for="java.lang.Exception"/> -->
</tx:attributes>
</tx:advice>
第二种使用注解@Transactional
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--声明使用注解式事务-->
<tx:annotation-driven transaction-manager="transactionManager"/>
这篇关于java - mybatis怎么处理事务问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文