通用Mapper

1:spring声明式事务详解

 1 <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
 2          <!--  创建事务管理器, 管理sessionFactory(因为所有的session都是从sessionFactory获取的) -->
 3          <property name="sessionFactory" ref="sessionFactory" />
 4      </bean>
 5     <!--  配置通知, 那些方法需要切入什么类型的事务 -->     
 6     <tx:advice id="advice" transaction-manager="transactionManager">
 7          <tx:attributes>
 8              <tx:method name="add*" propagation="REQUIRED"/>
 9              <tx:method name="del*" propagation="REQUIRED"/>
10              <tx:method name="update*" propagation="REQUIRED"/>
11              <tx:method name="*" propagation="SUPPORTS" read-only="true"/>
12          </tx:attributes>
13      </tx:advice>
14      
15      <!-- 配置切面表达式, 并且让 tx与切面表达式合二为一 -->
16      <aop:config>
17          <!-- 表达式, 定义哪个包的哪些类需要切入事务,但是此处并且没有制定类中哪些方法,需要切入什么样 事务 -->
18          <aop:pointcut expression="execution(* news.service.*.*(..))" id="pointcut" />
19          <aop:advisor advice-ref="advice" pointcut-ref="pointcut"/>
20      </aop:config>

1、创建事务管理器

2、配置通知      advice:通知。

 

<tx:attributes>中的设置

3、配置切面表达式, 并且让 tx与切面表达式合二为一     config:配置

1 我解释一下execution(* news.service.*.*(..))"中几个通配符的含义:
2 
3 第一个 * —— 通配 任意返回值类型
4 第二个 * —— 通配 包news.service下的任意class
5 第三个 * —— 通配 包news.service下的任意class的任意方法
6 第四个 .. —— 通配 方法可以有0个或多个参数
7 
8 综上:包news.service下的任意class的具有任意返回值类型、任意数目参数和任意名称的方法
原文地址:https://www.cnblogs.com/bulrush/p/8650300.html