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
ruoyi-admin/src/main/java/com/ruoyi/web/test/controller
ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/service

@ -4,9 +4,16 @@ import com.ruoyi.bookmark.domain.SqBookmark;
import com.ruoyi.bookmark.domain.SqMenu;
import com.ruoyi.bookmark.mapper.SqBookmarkMapper;
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.junit.Test;
import org.mybatis.spring.SqlSessionTemplate;
import org.omg.PortableServer.THREAD_POLICY_ID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collections;
@ -22,7 +29,11 @@ public class SqMenuTest extends BaseSpringBootTest{
@Autowired
SqMenuMapper sqMenuMapper;
@Autowired
private ISqMenuService iSqMenuService;
@Autowired
SqBookmarkMapper sqBookmarkMapper;
@Autowired
SqlSessionTemplate sqlSessionTemplate;
@Test
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) + "---------------");
}
}

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

@ -16,6 +16,9 @@ import org.springframework.stereotype.Service;
import com.ruoyi.bookmark.mapper.SqMenuMapper;
import com.ruoyi.bookmark.domain.SqMenu;
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业务层处理
@ -137,6 +140,34 @@ public class SqMenuServiceImpl implements ISqMenuService
}
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;
}
/**
* 修改书签菜单