2 cxm77870428 cxm77870428 于 2016.09.07 12:16 提问

spring + mybatis 事物不起作用,无法回滚

spring + mybatis 事物不起作用,无法回滚:求解

设置如下:

<aop:aspectj-autoproxy proxy-target-class="true" />

<!-- 基于Druid数据库链接池的数据源配置 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="initialSize" value="${pool.initialSize}" />
    <property name="minIdle" value="${pool.minIdle}" />
    <property name="maxActive" value="${pool.maxActive}" />
    <property name="maxWait" value="${pool.maxWait}" />
    <property name="timeBetweenEvictionRunsMillis" value="${pool.timeBetweenEvictionRunsMillis}" />
    <property name="minEvictableIdleTimeMillis" value="${pool.minEvictableIdleTimeMillis}" />
    <property name="testWhileIdle" value="true" />
    <property name="testOnBorrow" value="true" />
    <property name="testOnReturn" value="false" />
    <property name="validationQuery" value="${jdbc.validationQuery}" />
    <property name="filters" value="config" />
    <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${jdbc.publickey}" />
</bean>

<!-- 将数据源映射到sqlSessionFactory中 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mapperLocations" value="classpath*:mapper/*.Mapper.xml" />
    <property name="configLocation" value="classpath:config/mybatis-config.xml" />
</bean>

<!-- SqlSession模板类实例 -->
<bean id="sessionTemplate" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="close">
    <constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

<!--======= 事务配置 Begin ================= -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>
<!-- <aop:pointcut id="txPointcut" expression="execution(* com.enjoy.system.service..*(..)) or execution(* com.enjoy.commodity.service..*(..))" /> -->

<aop:config>
    <aop:pointcut id="txPointcut" expression="(execution(* com.enjoy.system.service..*(..)) or execution(* com.enjoy.commodity.service..*(..)))" />
    <aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice" />
</aop:config>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="insert*" propagation="REQUIRED" />
        <tx:method name="save*" propagation="REQUIRED" />
        <tx:method name="add*" propagation="REQUIRED" />
        <tx:method name="set*" propagation="REQUIRED" />
        <tx:method name="update*" propagation="REQUIRED" />
        <tx:method name="edit*" propagation="REQUIRED" />
        <tx:method name="delete*" propagation="REQUIRED" />
        <tx:method name="remove*" propagation="REQUIRED" />
        <tx:method name="init*" propagation="REQUIRED" />
        <tx:method name="get*" propagation="REQUIRED" read-only="true" />
        <tx:method name="count*" propagation="REQUIRED" read-only="true" />
        <tx:method name="find*" propagation="REQUIRED" read-only="true" />
        <tx:method name="list*" propagation="REQUIRED" read-only="true" />
        <tx:method name="*" read-only="true" />
    </tx:attributes>
</tx:advice>

求解!!

3个回答

of214
of214   2016.09.07 12:28

看上去配置没有问题,贴一下java代码和日志
是不是service中的方法名不是以你配置的方法名开头的
可以看下这篇文章:http://58coding.com/article/detail/24667919514339873

fu415037685
fu415037685   2016.09.07 13:32

你的包是不是导入的全和正确

cxm77870428
cxm77870428   2016.09.08 11:52

service层:

package com.enjoy.commodity.service;

import java.util.List;
import java.util.Map;

import com.enjoy.commodity.entity.CommodityImage;

public interface CommodityImageService {

/**
 * 保存信息.
 * 
 * @param bean
 */
public void insert(CommodityImage entity);

/**
 * 批量保存
 * @param list
 */
public void insert(List<CommodityImage> list);

/**
 * 更新信息.
 * 
 * @param user
 */
public void update(CommodityImage entity);

/**
 * 根据ID获取信息.
 * 
 * @param userId
 * @return
 */
public CommodityImage getById(Long id);

/**
 * 根据ID删除
 * 
 * @param id 
 */
public void deleteById(Long id);

/**
 * 根据id批里删除
 * @param list
 */
public void deleteByIds(List<Map<String, Object>> list);

/**
 * 得到商品图片
 * @param map commodityid
 * @return
 */
public List<CommodityImage> listBy(Map<String, Object> map);

/**
 * 得到商品图片条数
 * @param map
 * @return
 */
public Long getCountByColumn(Map<String, Object> map);

}
图片说明

包也是对上的没有错误信息

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
springboot+mybatis+mysql事务未生效
公司新项目 用的是springboot+mybatis+mysql 未使用springboot的jpa 1@Configuration @MapperScan("com.xx.xxx.dao") @EnableTransactionManagement public class MyBatisConfiguration { @Value("${connection.datasource.
spring+ mybatis 事务不能回滚问题解决
【2018年4月13号更新修改该说明】,之前我说自动扫描要精确到Controller就可以解决回滚问题,确实可以解决问题,自动装配的范围变小了,这样其他的Service层、dao层就不能自动装配了,这样肯定不合理。   原来Spring已经有相关的配置处理这个问题了,如果你项目不能回滚,肯定是把Controller层扫进去了,在application.xml文件中自动扫描配置新增&amp;lt;conte...
springboot+shiro+mybatis整合发现部分功能事务没有被spring管理
Shiro自定义Realm中没有Spring的事物管理
Spring/SpringMVC/MyBatis整合+事务回滚
Spring/SpringMVC/MyBatis整合,可事务回滚
【重要】spring+springMVC,JdbcTemplate声明式事务失效,原因以及解决办法
【重要】spring+springMVC,JdbcTemplate声明式事务失效,原因以及解决办法   我的分析:由于配置了多份xml配置文件,导致了会生成父子容器,applicationContext.xml生成父容器,servlet-context.xml生成子容器。   @Service实例 本应由父容器扫描,结果由子容器生成。解决办法参照第三点,指定哪些不扫描。   -----
mybatis整合spring、springmvc时业务层无法进行事务回滚问题解决
前言:近期换了新公司,刚来公司就接触了一下mybatis,因为springmvc和spring比较熟悉,我想大概现在绝大部分的公司都在用吧,刚接触mybatis时感觉真心蛋疼,纯sql才处理业务,实在是有点不习惯,不过感觉整个框架较之前的orm架构确实感觉速度快一点 好了,直接进入正题 需求:需要在一个业务层方法内完成对两张不同的表进行插入操作 一开始我直接在mybatis的
[spring,mysql] spring使用注解式事务声明(@Transactional)无法回滚
@Transactional事务回滚 在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。 Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这个例外是unchecked 如果遇到checked意外就不回滚。 如何改变默认规则: 1 让checked
SpringMVC Mybatis的事务回滚问题
采用的基本搭建环境:SpringMVC、MyBatis、MySQL、tomcat         Spring事务管理分解了传统的全局事务管理和本地事务管理的劣势,使得在任何环境中都可以使用统一的事务管理模型,你可以写一次代码,然后在不同的环境从你的代码里面配置不同的事务管理策略,Spring提供两种事务管理策略:一种是声明式事务管理策略,另一种是编程式事务管理策略,这里主要介绍声明式事务管理策
spring+springmvc+mybatis事务失效问题
springmvc 事务配置时使用myP6DataSource导致事务失效
SpringBoot配置注解事务、mysql表事务不起作用原因=只有innoDB引擎支持事务
1)       SpringBoot配置注解事务(1)步骤(2)例子 2)       mysql表事务不起作用的原因