mybatis 事务 和 批量插入

This commit is contained in:
WangHao 2021-04-05 16:16:16 +08:00
parent bb01b94a52
commit 8abfbae5ff
3 changed files with 76 additions and 1 deletions

View File

@ -4,9 +4,16 @@ import com.ruoyi.bookmark.domain.SqBookmark;
import com.ruoyi.bookmark.domain.SqMenu; import com.ruoyi.bookmark.domain.SqMenu;
import com.ruoyi.bookmark.mapper.SqBookmarkMapper; import com.ruoyi.bookmark.mapper.SqBookmarkMapper;
import com.ruoyi.bookmark.mapper.SqMenuMapper; import com.ruoyi.bookmark.mapper.SqMenuMapper;
import com.ruoyi.bookmark.service.ISqMenuService;
import com.ruoyi.bookmark.service.impl.SqMenuServiceImpl;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.velocity.runtime.directive.Foreach; import org.apache.velocity.runtime.directive.Foreach;
import org.junit.Test; import org.junit.Test;
import org.mybatis.spring.SqlSessionTemplate;
import org.omg.PortableServer.THREAD_POLICY_ID;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -22,7 +29,11 @@ public class SqMenuTest extends BaseSpringBootTest{
@Autowired @Autowired
SqMenuMapper sqMenuMapper; SqMenuMapper sqMenuMapper;
@Autowired @Autowired
private ISqMenuService iSqMenuService;
@Autowired
SqBookmarkMapper sqBookmarkMapper; SqBookmarkMapper sqBookmarkMapper;
@Autowired
SqlSessionTemplate sqlSessionTemplate;
@Test @Test
public void addMenuUplinkSeries() { public void addMenuUplinkSeries() {
@ -106,6 +117,29 @@ public class SqMenuTest extends BaseSpringBootTest{
} }
} }
//测试mybatis的事务
@Test
public void test4() throws Exception {
SqMenu sqMenu1 = new SqMenu();
sqMenu1.setUserId(2L);
sqMenu1.setMenuName("AAAAAAAAA");
int count = iSqMenuService.insertSqMenu2(sqMenu1);
}
//批量插入
@Test
public void testInsertBatch2() throws Exception {
long start = System.currentTimeMillis();
SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);//跟上述sql区别
SqMenuMapper mapper = sqlSession.getMapper(SqMenuMapper.class);
for (int i = 0; i < 10; i++) {
SqMenu sqMenu1 = new SqMenu();
sqMenu1.setUserId(2L);
sqMenu1.setMenuName("AAAAAAAAA"+i);
mapper.insertSqMenu(sqMenu1);
}
sqlSession.commit();
long end = System.currentTimeMillis();
System.out.println("---------------" + (start - end) + "---------------");
}
} }

View File

@ -3,6 +3,7 @@ package com.ruoyi.bookmark.service;
import java.util.List; import java.util.List;
import com.ruoyi.bookmark.domain.SqMenu; import com.ruoyi.bookmark.domain.SqMenu;
import org.omg.CORBA.INTERNAL; import org.omg.CORBA.INTERNAL;
import org.springframework.transaction.annotation.Transactional;
/** /**
* 书签菜单Service接口 * 书签菜单Service接口
@ -81,6 +82,15 @@ public interface ISqMenuService
*/ */
public int insertSqMenu(SqMenu sqMenu); public int insertSqMenu(SqMenu sqMenu);
/**
* 新增书签菜单 测试事务
*
* @param sqMenu 书签菜单
* @return 结果
*/
@Transactional
public int insertSqMenu2(SqMenu sqMenu)throws Exception;
/** /**
* 修改书签菜单 * 修改书签菜单
* *

View File

@ -16,6 +16,9 @@ import org.springframework.stereotype.Service;
import com.ruoyi.bookmark.mapper.SqMenuMapper; import com.ruoyi.bookmark.mapper.SqMenuMapper;
import com.ruoyi.bookmark.domain.SqMenu; import com.ruoyi.bookmark.domain.SqMenu;
import com.ruoyi.bookmark.service.ISqMenuService; import com.ruoyi.bookmark.service.ISqMenuService;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
/** /**
* 书签菜单Service业务层处理 * 书签菜单Service业务层处理
@ -137,6 +140,34 @@ public class SqMenuServiceImpl implements ISqMenuService
} }
return i; return i;
} }
/**
* 新增书签菜单 测试事务
*
* @param sqMenu 书签菜单
* @return 结果
*/
@Override
public int insertSqMenu2 (SqMenu sqMenu)throws Exception
{
sqMenu.setCreateTime(DateUtils.getNowDate());
sqMenu.setMenuName("AAAAAAAAAAAAAAA");
int i = sqMenuMapper.insertSqMenu(sqMenu);
if (i>0){
System.out.println("添加成功了");
// int a = 9/0; //模拟异常
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//强制事务回滚
}
sqMenu.setUserId(2L);
sqMenuMapper.insertSqMenu(sqMenu);
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
System.out.println("事务已经提交了 后增强!!!!");
}
});
return i;
}
/** /**
* 修改书签菜单 * 修改书签菜单