(1)导入验证修正bug,多线程引入service调用时发生异常,将service调用dns响应策略,dns组改为从缓存中获取

(2)DNS IP导入改为批量导入
This commit is contained in:
wangxin
2018-11-16 17:06:36 +08:00
parent 19be05a25d
commit 0ece4f5729
8 changed files with 98 additions and 58 deletions

View File

@@ -5,11 +5,15 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.beust.jcommander.internal.Lists;
import com.nis.domain.Page;
import com.nis.domain.callback.InlineIp;
import com.nis.domain.configuration.BaseIpCfg;
@@ -20,6 +24,7 @@ import com.nis.util.ConfigServiceUtil;
import com.nis.web.dao.configuration.DnsIpCfgDao;
import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService;
import com.nis.web.service.SpringContextHolder;
@@ -45,11 +50,28 @@ public class DnsIpCfgService extends BaseService{
public DnsIpCfg getDnsIpCfg(Long cfgId) {
return dnsIpCfgDao.getDnsIpCfg(cfgId);
}
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveDnsIpCfg(List<BaseIpCfg> cfgs) {
List<DnsIpCfg> dnsIpCfgs=Lists.newArrayList(cfgs.size());
for(BaseIpCfg cfg:cfgs) {
DnsIpCfg _cfg=new DnsIpCfg();
BeanUtils.copyProperties(cfg, _cfg);
saveOrUpdate(_cfg);
dnsIpCfgs.add(_cfg);
}
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try{
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for(int index = 0; index < dnsIpCfgs.size();index++){
DnsIpCfg dnsIpCfg = dnsIpCfgs.get(index);
//如果insert加入了select last_insert_id会拖慢6~7倍以上的效率
((DnsIpCfgDao) batchSqlSession.getMapper(DnsIpCfgDao.class)).insert(dnsIpCfg);
}
batchSqlSession.commit();
}finally {
if(batchSqlSession != null){
batchSqlSession.close();
}
}
}
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)