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