app ip保存优化,一个insert 多个value

This commit is contained in:
wangxin
2018-11-12 17:26:44 +08:00
parent 3240ad4de2
commit b915a53f9b
5 changed files with 77 additions and 4 deletions

View File

@@ -1,5 +1,6 @@
package com.nis.web.service.configuration;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -13,7 +14,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.google.common.collect.Lists;
import com.nis.domain.Page;
import com.nis.domain.basics.AsnIpCfg;
import com.nis.domain.basics.Varibles;
import com.nis.domain.configuration.AppByteCfg;
import com.nis.domain.configuration.AppDomainCfg;
import com.nis.domain.configuration.AppHeaderCfg;
@@ -48,6 +52,7 @@ import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
import com.nis.util.StringUtils;
import com.nis.web.dao.basics.AsnIpCfgDao;
import com.nis.web.dao.configuration.AppCfgDao;
import com.nis.web.dao.configuration.AreaIpCfgDao;
import com.nis.web.dao.configuration.IpCfgDao;
@@ -78,6 +83,8 @@ public class AppCfgService extends BaseService {
protected SpecificServiceCfgDao specificServiceCfgDao;
@Autowired
protected ConfigGroupInfoDao configGroupInfoDao;
@Autowired
protected AsnIpCfgDao asnIpCfgDao;
public Page<AppPolicyCfg> findAppPolicyList(Page<AppPolicyCfg> page, AppPolicyCfg entity) {
entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(), "r"));
@@ -326,6 +333,8 @@ public class AppCfgService extends BaseService {
*/
@Transactional(readOnly = false, rollbackFor = RuntimeException.class)
public void saveAppIpCfg(List<BaseIpCfg> cfgs,SpecificServiceCfg specificServiceCfg){
logger.warn("Start to save IP");
long start=System.currentTimeMillis();
ConfigGroupInfo configGroupInfo=configGroupInfoDao.getConfigGroupInfoByGroupId(specificServiceCfg.getGroupId());
if(configGroupInfo==null) {//一般特定服务的组号是新增之后就有的,不会进入这一步。
Integer groupId = ConfigServiceUtil.getId(2, 1).get(0);
@@ -343,12 +352,31 @@ public class AppCfgService extends BaseService {
specificServiceCfgDao.update(specificServiceCfg);
}
Integer compileId = configGroupInfo.getCompileId();
Varibles maxPacket=asnIpCfgDao.getVaribles("max_allowed_packet");
List<AppIpCfg> tempList=Lists.newArrayList();
int len=0;
for(BaseIpCfg cfg:cfgs) {
AppIpCfg entity=new AppIpCfg();
BeanUtils.copyProperties(cfg, entity);
entity.setCompileId(compileId);
appCfgDao.insertAppIpCfg(entity);
int tempLen=entity.toString().getBytes(Charset.forName("UTF-8")).length;
if((len+tempLen)<maxPacket.getValue().longValue()) {
tempList.add(entity);
len+=tempLen;
}else {
appCfgDao.insertAppIpCfgBatch(tempList);
tempList.clear();
tempList.add(entity);
len=tempLen;
}
}
if(tempList.size()>0) {
logger.warn("save ip size:"+tempList.size());
appCfgDao.insertAppIpCfgBatch(tempList);
tempList.clear();
}
long end=System.currentTimeMillis();
logger.warn("Save IP finish,cost:"+(end-start));
}
@Transactional(readOnly = false, rollbackFor = RuntimeException.class)
public void saveOrUpdateAppIpCfg(AppIpCfg entity) throws Exception {