设为首页 收藏本站
查看: 671|回复: 0

[经验分享] Spring Mybatis独立事务配置

[复制链接]

尚未签到

发表于 2016-11-26 06:02:08 | 显示全部楼层 |阅读模式
  在项目中有很多地方会使用到独立事务,下面以获取主键为例
 
(1)修改配置文件spring-mybatis.xml
 <!-- 开启事务支持 -->
 <tx:annotation-driven transaction-manager="transactionManager" />
 
 <!-- 拦截器方式配置事务 -->
 <!-- 定义service事务通知-->
 <tx:advice id="txAdvice" transaction-manager="transactionManager">
  <!-- 定义方法的过滤规则 -->
  <tx:attributes>
   <tx:method name="save*" propagation="REQUIRED" />
   <tx:method name="add*" propagation="REQUIRED" />
   <tx:method name="create*" propagation="REQUIRED" />
   <tx:method name="insert*" propagation="REQUIRED" />
   <tx:method name="update*" propagation="REQUIRED" />
   <tx:method name="merge*" propagation="REQUIRED" />
   <tx:method name="del*" propagation="REQUIRED" />
   <tx:method name="remove*" propagation="REQUIRED" />
   <tx:method name="put*" propagation="REQUIRED" />
   
   <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
   <tx:method name="count*" propagation="SUPPORTS" read-only="true" />
   <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
   <tx:method name="list*" propagation="SUPPORTS" read-only="true" />
   <tx:method name="*" propagation="SUPPORTS" read-only="true" />
   
   <!-- 获取主键开启独立事务 -->
   <tx:method name="getPKId" propagation="REQUIRES_NEW" />
  </tx:attributes>
 </tx:advice>  
 
 <!--AOP配置  -->
 <aop:config proxy-target-class="true">
  <!-- 适配切入点 和 事务的通知 -->
  <aop:pointcut id="txPointcut"
   expression="execution(* *..*SVImpl.*(..))" />
  <aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice" />
 </aop:config>
 
(2)服务层新增接口和方法
 

 
新增接口
ICommonSV
    新增方法
    public long getPKId(String tableName) throws Exception;
 
 
新增实现类
CommonSVImpl
    新增方法
    public long getPKId(String tableName) {
  long seq = -1;
  StringBuilder sb = new StringBuilder();
  sb.append(" SELECT ");
  sb.append(tableName).append("$SEQ.NEXTVAL SEQ ");
  sb.append(" FROM DUAL ");
  Map map = new HashMap();
  try {
   map = executeQuerySql(sb.toString()).get(0);
  } catch (Exception e) {
   throw new ZCrmException("["+tableName+"]获取主键失败:"+e.getMessage());
  }
  seq = Long.parseLong(map.get("SEQ").toString());
  log.info(tableName+"$SEQ:"+seq);
  return seq;
 }
 
 
@Autowired
 private ICommonDAO ICommonDAO;
 
 private synchronized List<Map> executeQuerySql(String sql) throws Exception {
  List<Map> o = null;
   o = ICommonDAO.executeQuerySql(new SQLAdapter(sql)); 
  return o;
 }
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-305541-1-1.html 上篇帖子: [简单]mybatis判断数字类型 下篇帖子: spring4+mybatis框架构建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表