当运行是报如下错:
大体是说事务没激活,我在在开启事务钱需要配置事务的一些条件这配置有:
- xml配置
- 基于注解配置
这讲解xml配置在spring-mybatis.xml或有时是在spring-service.xml其实这后面service.xml也可以合并到mybatis里面添加:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 扫描service包下所有使用注解的类型 --> <context:component-scan base-package="com.imooc.service" /> <!-- 配置基于注解的声明式事务 开启事务 --> <tx:annotation-driven /> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 注入数据库连接池 --> <property name="dataSource" ref="dataSource" /> </bean> </beans>
其实还在在service层里依赖注入进去@Transactional,很多人忘记来这,以为在xml里配置了就可以了。
/** * @author * @date 2019-06-06 17:17 */ @Transactional @Service public class AreaServiceImpl implements AreaService { @Autowired private AreaDao areaDao; @Override public List<Area> getAreaList() { return areaDao.queryArea(); } }
最后运行成功如下: