Explorar el Código

!44 修改批量接口,改用mybatis原生foreach优化性能
Merge pull request !44 from Yjoioooo/insert-optimization

疯狂的狮子Li hace 3 años
padre
commit
38c3c878e1

+ 8 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java

@@ -30,4 +30,12 @@ public interface SysDeptMapper extends BaseMapperPlus<SysDept> {
      */
     public List<Integer> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
 
+	/**
+	 * 修改子元素关系
+	 *
+	 * @param depts 子元素
+	 * @return 结果
+	 */
+	public int updateDeptChildren(@Param("depts") List<SysDept> depts);
+
 }

+ 10 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java

@@ -3,6 +3,8 @@ package com.ruoyi.system.mapper;
 import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysRoleDept;
 
+import java.util.List;
+
 /**
  * 角色与部门关联表 数据层
  *
@@ -10,4 +12,12 @@ import com.ruoyi.system.domain.SysRoleDept;
  */
 public interface SysRoleDeptMapper extends BaseMapperPlus<SysRoleDept> {
 
+	/**
+	 * 批量新增角色部门信息
+	 *
+	 * @param roleDeptList 角色部门列表
+	 * @return 结果
+	 */
+	public int batchRoleDept(List<SysRoleDept> roleDeptList);
+
 }

+ 10 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java

@@ -3,6 +3,8 @@ package com.ruoyi.system.mapper;
 import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysRoleMenu;
 
+import java.util.List;
+
 /**
  * 角色与菜单关联表 数据层
  *
@@ -10,4 +12,12 @@ import com.ruoyi.system.domain.SysRoleMenu;
  */
 public interface SysRoleMenuMapper extends BaseMapperPlus<SysRoleMenu> {
 
+	/**
+	 * 批量新增角色菜单信息
+	 *
+	 * @param roleMenuList 角色菜单列表
+	 * @return 结果
+	 */
+	public int batchRoleMenu(List<SysRoleMenu> roleMenuList);
+
 }

+ 10 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java

@@ -3,6 +3,8 @@ package com.ruoyi.system.mapper;
 import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysUserPost;
 
+import java.util.List;
+
 /**
  * 用户与岗位关联表 数据层
  *
@@ -10,4 +12,12 @@ import com.ruoyi.system.domain.SysUserPost;
  */
 public interface SysUserPostMapper extends BaseMapperPlus<SysUserPost> {
 
+	/**
+	 * 批量新增用户岗位信息
+	 *
+	 * @param userPostList 用户角色列表
+	 * @return 结果
+	 */
+	public int batchUserPost(List<SysUserPost> userPostList);
+
 }

+ 10 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java

@@ -3,6 +3,8 @@ package com.ruoyi.system.mapper;
 import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysUserRole;
 
+import java.util.List;
+
 /**
  * 用户与角色关联表 数据层
  *
@@ -10,4 +12,12 @@ import com.ruoyi.system.domain.SysUserRole;
  */
 public interface SysUserRoleMapper extends BaseMapperPlus<SysUserRole> {
 
+	/**
+	 * 批量新增用户角色信息
+	 *
+	 * @param userRoleList 用户角色列表
+	 * @return 结果
+	 */
+	public int batchUserRole(List<SysUserRole> userRoleList);
+
 }

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java

@@ -244,7 +244,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
             child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
         }
         if (children.size() > 0) {
-            updateBatchById(children);
+            baseMapper.updateDeptChildren(children);
         }
     }
 

+ 2 - 6
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java

@@ -240,9 +240,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
             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 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
             list.add(rd);
         }
         if (list.size() > 0) {
-            for (SysRoleDept sysRoleDept : list) {
-                rows += roleDeptMapper.insert(sysRoleDept);
-            }
+			rows = roleDeptMapper.batchRoleDept(list);
         }
         return rows;
     }

+ 2 - 6
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -311,9 +311,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 list.add(ur);
             }
             if (list.size() > 0) {
-                for (SysUserRole sysUserRole : list) {
-                    userRoleMapper.insert(sysUserRole);
-                }
+				userRoleMapper.batchUserRole(list);
             }
         }
     }
@@ -335,9 +333,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 list.add(up);
             }
             if (list.size() > 0) {
-                for (SysUserPost sysUserPost : list) {
-                    userPostMapper.insert(sysUserPost);
-                }
+				userPostMapper.batchUserPost(list);
             }
         }
     }

+ 13 - 0
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>

+ 8 - 1
ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml

@@ -9,4 +9,11 @@
         <result property="deptId" column="dept_id"/>
     </resultMap>
 
-</mapper> 
+    <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>

+ 8 - 1
ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml

@@ -9,4 +9,11 @@
         <result property="menuId" column="menu_id"/>
     </resultMap>
 
-</mapper> 
+    <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>

+ 8 - 1
ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml

@@ -9,4 +9,11 @@
         <result property="postId" column="post_id"/>
     </resultMap>
 
-</mapper> 
+    <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>

+ 8 - 1
ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml

@@ -9,4 +9,11 @@
         <result property="roleId" column="role_id"/>
     </resultMap>
 
-</mapper> 
+    <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>