From 38c3c878e1f9427ee8cfc1fd2bb1ed42e73d0138 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期一, 31 五月 2021 17:43:53 +0800
Subject: [PATCH] !44 修改批量接口,改用mybatis原生foreach优化性能 Merge pull request !44 from Yjoioooo/insert-optimization

---
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java            |    8 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java        |   10 +++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java        |   10 +++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java        |   10 +++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java        |   10 +++++
 ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml              |    9 ++++
 ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml              |    9 ++++
 ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml              |    9 ++++
 ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml                  |   13 ++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java |    8 +---
 ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml              |    9 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java |    8 +---
 13 files changed, 98 insertions(+), 17 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
index 12824e7..54fe261 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
@@ -30,4 +30,12 @@
      */
     public List<Integer> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
 
+	/**
+	 * 淇敼瀛愬厓绱犲叧绯�
+	 *
+	 * @param depts 瀛愬厓绱�
+	 * @return 缁撴灉
+	 */
+	public int updateDeptChildren(@Param("depts") List<SysDept> depts);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
index 6121490..331ecb9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
@@ -3,6 +3,8 @@
 import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysRoleDept;
 
+import java.util.List;
+
 /**
  * 瑙掕壊涓庨儴闂ㄥ叧鑱旇〃 鏁版嵁灞�
  *
@@ -10,4 +12,12 @@
  */
 public interface SysRoleDeptMapper extends BaseMapperPlus<SysRoleDept> {
 
+	/**
+	 * 鎵归噺鏂板瑙掕壊閮ㄩ棬淇℃伅
+	 *
+	 * @param roleDeptList 瑙掕壊閮ㄩ棬鍒楄〃
+	 * @return 缁撴灉
+	 */
+	public int batchRoleDept(List<SysRoleDept> roleDeptList);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
index fa8c5a3..4f08cea 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
@@ -3,6 +3,8 @@
 import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysRoleMenu;
 
+import java.util.List;
+
 /**
  * 瑙掕壊涓庤彍鍗曞叧鑱旇〃 鏁版嵁灞�
  *
@@ -10,4 +12,12 @@
  */
 public interface SysRoleMenuMapper extends BaseMapperPlus<SysRoleMenu> {
 
+	/**
+	 * 鎵归噺鏂板瑙掕壊鑿滃崟淇℃伅
+	 *
+	 * @param roleMenuList 瑙掕壊鑿滃崟鍒楄〃
+	 * @return 缁撴灉
+	 */
+	public int batchRoleMenu(List<SysRoleMenu> roleMenuList);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
index c17dfd5..7839bbe 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
@@ -3,6 +3,8 @@
 import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysUserPost;
 
+import java.util.List;
+
 /**
  * 鐢ㄦ埛涓庡矖浣嶅叧鑱旇〃 鏁版嵁灞�
  *
@@ -10,4 +12,12 @@
  */
 public interface SysUserPostMapper extends BaseMapperPlus<SysUserPost> {
 
+	/**
+	 * 鎵归噺鏂板鐢ㄦ埛宀椾綅淇℃伅
+	 *
+	 * @param userPostList 鐢ㄦ埛瑙掕壊鍒楄〃
+	 * @return 缁撴灉
+	 */
+	public int batchUserPost(List<SysUserPost> userPostList);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
index ddebd38..365bbf4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
@@ -3,6 +3,8 @@
 import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysUserRole;
 
+import java.util.List;
+
 /**
  * 鐢ㄦ埛涓庤鑹插叧鑱旇〃 鏁版嵁灞�
  *
@@ -10,4 +12,12 @@
  */
 public interface SysUserRoleMapper extends BaseMapperPlus<SysUserRole> {
 
+	/**
+	 * 鎵归噺鏂板鐢ㄦ埛瑙掕壊淇℃伅
+	 *
+	 * @param userRoleList 鐢ㄦ埛瑙掕壊鍒楄〃
+	 * @return 缁撴灉
+	 */
+	public int batchUserRole(List<SysUserRole> userRoleList);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
index 65f8601..7cdda23 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -244,7 +244,7 @@
             child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
         }
         if (children.size() > 0) {
-            updateBatchById(children);
+            baseMapper.updateDeptChildren(children);
         }
     }
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
index 9d4b10a..c46c45f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -240,9 +240,7 @@
             list.add(rm);
         }
         if (list.size() > 0) {
-            for (SysRoleMenu sysRoleMenu : list) {
-                rows += roleMenuMapper.insert(sysRoleMenu);
-            }
+			rows = roleMenuMapper.batchRoleMenu(list);
         }
         return rows;
     }
@@ -263,9 +261,7 @@
             list.add(rd);
         }
         if (list.size() > 0) {
-            for (SysRoleDept sysRoleDept : list) {
-                rows += roleDeptMapper.insert(sysRoleDept);
-            }
+			rows = roleDeptMapper.batchRoleDept(list);
         }
         return rows;
     }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 3133703..dd12f10 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -311,9 +311,7 @@
                 list.add(ur);
             }
             if (list.size() > 0) {
-                for (SysUserRole sysUserRole : list) {
-                    userRoleMapper.insert(sysUserRole);
-                }
+				userRoleMapper.batchUserRole(list);
             }
         }
     }
@@ -335,9 +333,7 @@
                 list.add(up);
             }
             if (list.size() > 0) {
-                for (SysUserPost sysUserPost : list) {
-                    userPostMapper.insert(sysUserPost);
-                }
+				userPostMapper.batchUserPost(list);
             }
         }
     }
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
index 21f6854..2f56544 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -57,4 +57,17 @@
         order by d.parent_id, d.order_num
     </select>
 
+    <update id="updateDeptChildren" parameterType="java.util.List">
+        update sys_dept set ancestors =
+        <foreach collection="depts" item="item" index="index"
+                 separator=" " open="case dept_id" close="end">
+            when #{item.deptId} then #{item.ancestors}
+        </foreach>
+        where dept_id in
+        <foreach collection="depts" item="item" index="index"
+                 separator="," open="(" close=")">
+            #{item.deptId}
+        </foreach>
+    </update>
+
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml
index 0fda682..cace1f5 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml
@@ -9,4 +9,11 @@
         <result property="deptId" column="dept_id"/>
     </resultMap>
 
-</mapper> 
\ No newline at end of file
+    <insert id="batchRoleDept">
+        insert into sys_role_dept(role_id, dept_id) values
+        <foreach item="item" index="index" collection="list" separator=",">
+            (#{item.roleId},#{item.deptId})
+        </foreach>
+    </insert>
+
+</mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
index 2529a72..356b612 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
@@ -9,4 +9,11 @@
         <result property="menuId" column="menu_id"/>
     </resultMap>
 
-</mapper> 
\ No newline at end of file
+    <insert id="batchRoleMenu">
+        insert into sys_role_menu(role_id, menu_id) values
+        <foreach item="item" index="index" collection="list" separator=",">
+            (#{item.roleId},#{item.menuId})
+        </foreach>
+    </insert>
+
+</mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml
index bd13ed4..8d70825 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml
@@ -9,4 +9,11 @@
         <result property="postId" column="post_id"/>
     </resultMap>
 
-</mapper> 
\ No newline at end of file
+    <insert id="batchUserPost">
+        insert into sys_user_post(user_id, post_id) values
+        <foreach item="item" index="index" collection="list" separator=",">
+            (#{item.userId},#{item.postId})
+        </foreach>
+    </insert>
+
+</mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
index 3d41141..1db2f0f 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
@@ -9,4 +9,11 @@
         <result property="roleId" column="role_id"/>
     </resultMap>
 
-</mapper> 
\ No newline at end of file
+    <insert id="batchUserRole">
+        insert into sys_user_role(user_id, role_id) values
+        <foreach item="item" index="index" collection="list" separator=",">
+            (#{item.userId},#{item.roleId})
+        </foreach>
+    </insert>
+
+</mapper>

--
Gitblit v1.9.3