mybatis 事务 和 批量插入
This commit is contained in:
		| @@ -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; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改书签菜单 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user