通用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的具有任意返回值类型、任意数目参数和任意名称的方法