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