package com.ak.test;
import com.ak.mapper.SysUserMapper;
import com.ak.pojo.SysUser;
import com.ak.service.UserService;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.notification.RunListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml",
"classpath:applicationContext-dao.xml",
"classpath:applicationContext-tx.xml"})
public class MybatisTest {
@Autowired
// SysUserMapper mapper;
UserService service;
@Test
public void Test(){
// long count = mapper.countByExample(null);
// Assert.assertEquals(0,count);
List<SysUser> users = new ArrayList<SysUser>();
for (int i = 14; i < 16; i++) {
SysUser user = new SysUser();
user.setLoginAccount("admin"+i);
user.setLoginPwd("admin"+i);
user.setRealName("管理"+i);
user.setFlag(i%2);
users.add(user);
}
boolean status = service.saveUsers(users);
Assert.assertTrue(status);
}
}
package com.ak.impl;
import com.ak.mapper.SysUserMapper;
import com.ak.pojo.SysUser;
import com.ak.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import java.util.List;
@Transactional
@Service
public class UserServiceImpl implements UserService {
@Autowired
private SysUserMapper mapper;
// private DataSourceTransactionManager transactionManager; //事务管理器
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveUsers(List<SysUser> users) {
//以下是手动开启事务 发现怎么样都会自动提交,所以干脆用手动提交代码
// 1.获取事务定义
// DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// //2.设置事务隔离级别,开启新事务
// def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
// //3.获得事务状态
// TransactionStatus status = transactionManager.getTransaction(def);
boolean status = true;
int flag = 0;
for (SysUser user : users) {
flag+=mapper.insertSelective(user);
int a = 1/0;
}
return flag==users.size()?true:false;
}
}
<?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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/tool"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
https://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd">
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:advice id="tx" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="select*" read-only="true"/>
<tx:method name="query*" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="p1" expression="execution(* com.ak.service.*.*.*(..))"/>
<aop:advisor advice-ref="tx" pointcut-ref="p1"></aop:advisor>
</aop:config>
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
</beans>
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project ssm-web: There are test failures.
Please refer to F:\gitworkspace\ssm-parent\ssm-web\target\surefire-reports for the individual test results.