diff --git a/modules/core/src/main/java/com/jeesite/modules/msg/service/MsgInnerService.java b/modules/core/src/main/java/com/jeesite/modules/msg/service/MsgInnerService.java index 8a413051..e3825ce1 100644 --- a/modules/core/src/main/java/com/jeesite/modules/msg/service/MsgInnerService.java +++ b/modules/core/src/main/java/com/jeesite/modules/msg/service/MsgInnerService.java @@ -4,17 +4,6 @@ */ package com.jeesite.modules.msg.service; -import java.util.Date; -import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; - -import com.jeesite.common.callback.MethodCallback; import com.jeesite.common.collect.ListUtils; import com.jeesite.common.config.Global; import com.jeesite.common.entity.Page; @@ -27,17 +16,21 @@ import com.jeesite.modules.msg.dao.MsgInnerRecordDao; import com.jeesite.modules.msg.entity.MsgInner; import com.jeesite.modules.msg.entity.MsgInnerRecord; import com.jeesite.modules.msg.entity.MsgPush; -import com.jeesite.modules.msg.entity.content.AppMsgContent; -import com.jeesite.modules.msg.entity.content.BaseMsgContent; -import com.jeesite.modules.msg.entity.content.EmailMsgContent; -import com.jeesite.modules.msg.entity.content.PcMsgContent; -import com.jeesite.modules.msg.entity.content.SmsMsgContent; +import com.jeesite.modules.msg.entity.content.*; import com.jeesite.modules.msg.utils.MsgPushUtils; import com.jeesite.modules.sys.entity.EmpUser; import com.jeesite.modules.sys.entity.User; import com.jeesite.modules.sys.service.EmpUserService; - import io.netty.util.concurrent.DefaultThreadFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; /** * 内部消息Service @@ -68,8 +61,7 @@ public class MsgInnerService extends CrudService { /** * 查询分页数据 - * @param msgInner 查询条件 - * @param msgInner.page 分页对象 + * @param msgInner 查询条件;.page 分页对象 * @return */ @Override @@ -191,12 +183,7 @@ public class MsgInnerService extends CrudService { } } }); - ListUtils.pageList(recordList, 100, new MethodCallback() { - @SuppressWarnings("unchecked") - public Object execute(Object... objs) { - return msgInnerRecordDao.insertBatch((List)objs[0]); - } - }); + msgInnerRecordDao.insertBatch(recordList, null); // 手动触发消息推送任务 if (Global.TRUE.equals(Global.getProperty("msg.realtime.enabled"))){ msgPushThreadPool.submit(new Runnable() { diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/service/support/CompanyServiceSupport.java b/modules/core/src/main/java/com/jeesite/modules/sys/service/support/CompanyServiceSupport.java index 58e8c2b9..7a8382d6 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/service/support/CompanyServiceSupport.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/service/support/CompanyServiceSupport.java @@ -4,12 +4,6 @@ */ package com.jeesite.modules.sys.service.support; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; - import com.jeesite.common.collect.ListUtils; import com.jeesite.common.service.TreeService; import com.jeesite.modules.sys.dao.CompanyDao; @@ -19,6 +13,11 @@ import com.jeesite.modules.sys.entity.CompanyOffice; import com.jeesite.modules.sys.service.CompanyService; import com.jeesite.modules.sys.service.DataScopeService; import com.jeesite.modules.sys.utils.EmpUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** * 公司管理Service @@ -85,7 +84,7 @@ public class CompanyServiceSupport extends TreeService list.forEach(e -> { e.setCompanyCode(company.getCompanyCode()); }); - companyOfficeDao.insertBatch(list); + companyOfficeDao.insertBatch(list, null); } // 清理公司相关缓存 clearCompanyCache(); diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmpUserServiceSupport.java b/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmpUserServiceSupport.java index 2a1a5dea..033ab49f 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmpUserServiceSupport.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmpUserServiceSupport.java @@ -4,16 +4,6 @@ */ package com.jeesite.modules.sys.service.support; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.validation.ConstraintViolation; -import javax.validation.ConstraintViolationException; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; - import com.jeesite.common.config.Global; import com.jeesite.common.entity.Page; import com.jeesite.common.idgen.IdGen; @@ -33,6 +23,14 @@ import com.jeesite.modules.sys.service.EmployeeService; import com.jeesite.modules.sys.service.UserService; import com.jeesite.modules.sys.utils.EmpUtils; import com.jeesite.modules.sys.utils.UserUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.PostConstruct; +import javax.validation.ConstraintViolation; +import javax.validation.ConstraintViolationException; +import java.util.List; /** * 员工管理Service @@ -164,7 +162,7 @@ public class EmpUserServiceSupport extends CrudService employeeOffice.setId(IdGen.nextId()); employeeOffice.setEmpCode(employee.getEmpCode()); }); - employeeOfficeDao.insertBatch(employee.getEmployeeOfficeList()); + employeeOfficeDao.insertBatch(employee.getEmployeeOfficeList(), null); } } diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmployeeServiceSupport.java b/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmployeeServiceSupport.java index b8bb0a09..fe1826e3 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmployeeServiceSupport.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/service/support/EmployeeServiceSupport.java @@ -4,11 +4,6 @@ */ package com.jeesite.modules.sys.service.support; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; - import com.jeesite.common.collect.ListUtils; import com.jeesite.common.entity.Page; import com.jeesite.common.service.CrudService; @@ -19,6 +14,10 @@ import com.jeesite.modules.sys.entity.Employee; import com.jeesite.modules.sys.entity.EmployeeOffice; import com.jeesite.modules.sys.entity.EmployeePost; import com.jeesite.modules.sys.service.EmployeeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** * 员工管理Service @@ -80,7 +79,7 @@ public class EmployeeServiceSupport extends CrudService for (EmployeePost e : employee.getEmployeePostList()){ e.setEmpCode(employee.getEmpCode()); } - employeePostDao.insertBatch(employee.getEmployeePostList()); + employeePostDao.insertBatch(employee.getEmployeePostList(), null); } } diff --git a/modules/core/src/main/resources/config/jeesite-core.yml b/modules/core/src/main/resources/config/jeesite-core.yml index 1a00f211..e98f431b 100644 --- a/modules/core/src/main/resources/config/jeesite-core.yml +++ b/modules/core/src/main/resources/config/jeesite-core.yml @@ -537,6 +537,9 @@ mybatis: # 是否开启 JDBC 管理事务,默认 Spring 管理事务 v4.2.3 jdbcTransaction: false + + # 批量插入和更新的分批默认大小(防止库一次性接受不了太大的sql语句) + defaultBatchSize: 500 # Mapper文件刷新线程 mapper: diff --git a/modules/core/src/main/resources/mybatis/mybatis-config.xml b/modules/core/src/main/resources/mybatis/mybatis-config.xml index b1a85c8f..08c393dd 100644 --- a/modules/core/src/main/resources/mybatis/mybatis-config.xml +++ b/modules/core/src/main/resources/mybatis/mybatis-config.xml @@ -25,13 +25,13 @@ - + - + - + diff --git a/web-api/src/main/resources/config/application.yml b/web-api/src/main/resources/config/application.yml index baff0efd..78332d38 100644 --- a/web-api/src/main/resources/config/application.yml +++ b/web-api/src/main/resources/config/application.yml @@ -702,6 +702,9 @@ mybatis: # # # 是否开启 JDBC 管理事务,默认 Spring 管理事务 v4.2.3 # jdbcTransaction: false +# +# # 批量插入和更新的分批默认大小(防止库一次性接受不了太大的sql语句) +# defaultBatchSize: 500 # Mapper文件刷新线程 mapper: diff --git a/web-api/src/test/java/com/jeesite/test/InsertBatchTest.java b/web-api/src/test/java/com/jeesite/test/InsertBatchTest.java index a32e7569..be1c2419 100644 --- a/web-api/src/test/java/com/jeesite/test/InsertBatchTest.java +++ b/web-api/src/test/java/com/jeesite/test/InsertBatchTest.java @@ -4,19 +4,17 @@ */ package com.jeesite.test; -import java.util.List; - -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; - -import com.jeesite.common.callback.MethodCallback; import com.jeesite.common.collect.ListUtils; import com.jeesite.common.tests.BaseSpringContextTests; import com.jeesite.modules.ApiApplication; import com.jeesite.modules.test.dao.TestDataDao; import com.jeesite.modules.test.entity.TestData; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import java.util.List; /** * 批量插入测试 @@ -38,14 +36,11 @@ public class InsertBatchTest extends BaseSpringContextTests { testData.setTestInput("test"+i); list.add(testData); } - ListUtils.pageList(list, 100, new MethodCallback() { - @SuppressWarnings("unchecked") - public Object execute(Object... objs) { - return testDataDao.insertBatch((List)objs[0]); - } - }); + testDataDao.insertBatch(list, null); list = testDataDao.findList(new TestData()); - System.out.println("size: " + list.size()); + System.out.println("insert: " + list.size()); + long count = testDataDao.updateBatch(list, null); + System.out.println("update: " + count); } } diff --git a/web-fast/src/test/java/com/jeesite/test/InsertBatchTest.java b/web-fast/src/test/java/com/jeesite/test/InsertBatchTest.java index 476777ce..454e1619 100644 --- a/web-fast/src/test/java/com/jeesite/test/InsertBatchTest.java +++ b/web-fast/src/test/java/com/jeesite/test/InsertBatchTest.java @@ -4,19 +4,17 @@ */ package com.jeesite.test; -import java.util.List; - -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; - -import com.jeesite.common.callback.MethodCallback; import com.jeesite.common.collect.ListUtils; import com.jeesite.common.tests.BaseSpringContextTests; import com.jeesite.modules.FastApplication; import com.jeesite.modules.test.dao.TestDataDao; import com.jeesite.modules.test.entity.TestData; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import java.util.List; /** * 批量插入测试 @@ -38,14 +36,11 @@ public class InsertBatchTest extends BaseSpringContextTests { testData.setTestInput("test"+i); list.add(testData); } - ListUtils.pageList(list, 100, new MethodCallback() { - @SuppressWarnings("unchecked") - public Object execute(Object... objs) { - return testDataDao.insertBatch((List)objs[0]); - } - }); + testDataDao.insertBatch(list, null); list = testDataDao.findList(new TestData()); - System.out.println("size: " + list.size()); + System.out.println("insert: " + list.size()); + long count = testDataDao.updateBatch(list, null); + System.out.println("update: " + count); } } diff --git a/web/src/main/resources/config/application.yml b/web/src/main/resources/config/application.yml index 899dbc52..2b9e7b3c 100644 --- a/web/src/main/resources/config/application.yml +++ b/web/src/main/resources/config/application.yml @@ -702,6 +702,9 @@ mybatis: # # # 是否开启 JDBC 管理事务,默认 Spring 管理事务 v4.2.3 # jdbcTransaction: false +# +# # 批量插入和更新的分批默认大小(防止库一次性接受不了太大的sql语句) +# defaultBatchSize: 500 # Mapper文件刷新线程 mapper: diff --git a/web/src/test/java/com/jeesite/test/InsertBatchTest.java b/web/src/test/java/com/jeesite/test/InsertBatchTest.java index 4046a535..79f3f222 100644 --- a/web/src/test/java/com/jeesite/test/InsertBatchTest.java +++ b/web/src/test/java/com/jeesite/test/InsertBatchTest.java @@ -4,19 +4,17 @@ */ package com.jeesite.test; -import java.util.List; - -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; - -import com.jeesite.common.callback.MethodCallback; import com.jeesite.common.collect.ListUtils; import com.jeesite.common.tests.BaseSpringContextTests; import com.jeesite.modules.Application; import com.jeesite.modules.test.dao.TestDataDao; import com.jeesite.modules.test.entity.TestData; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import java.util.List; /** * 批量插入测试 @@ -26,26 +24,23 @@ import com.jeesite.modules.test.entity.TestData; @ActiveProfiles("test") @SpringBootTest(classes=Application.class) public class InsertBatchTest extends BaseSpringContextTests { - + @Autowired private TestDataDao testDataDao; @Test - public void testData() throws Exception{ + public void testData1() throws Exception{ List list = ListUtils.newArrayList(); for(int i=0; i<5000; i++){ TestData testData = new TestData(); testData.setTestInput("test"+i); list.add(testData); } - ListUtils.pageList(list, 100, new MethodCallback() { - @SuppressWarnings("unchecked") - public Object execute(Object... objs) { - return testDataDao.insertBatch((List)objs[0]); - } - }); + testDataDao.insertBatch(list); list = testDataDao.findList(new TestData()); - System.out.println("size: " + list.size()); + System.out.println("insert: " + list.size()); + long count = testDataDao.updateBatch(list); + System.out.println("update: " + count); } }