ChannelController
- @PostMapping("/importTemplate")
- void importTemplate(HttpServletResponse response) {
- ExcelUtil
util = new ExcelUtil<>(Channel.class); - util.importTemplateExcel(response, "渠道数据");
- }
-
- @Log(title = "渠道管理", businessType = BusinessType.IMPORT)
- @PreAuthorize("hasPermission('tienchin:channel:import')")
- @PostMapping("/importData")
- AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
- ExcelUtil
util = new ExcelUtil<>(Channel.class); - List
channelList = util.importExcel(file.getInputStream()); - return AjaxResult.success(iChannelService.importChannel(channelList, updateSupport));
- }
IChannelService
- /**
- * 导入渠道数据
- *
- * @param channelList 渠道数据列表
- * @param updateSupport 是否更新支持,如果已存在,则进行更新数据
- * @return {@code boolean} {@code true} 导入成功 {@code false} 导入失败
- */
- boolean importChannel(List
channelList, boolean updateSupport) ;
ChannelServiceImpl
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean importChannel(List
channelList, boolean updateSupport) { - String username = SecurityUtils.getUsername();
- LocalDateTime currentTime = LocalDateTime.now();
-
- List
channels = channelList - .stream()
- .peek(channel -> {
- if (updateSupport) {
- channel.setUpdateBy(username);
- channel.setUpdateTime(currentTime);
- } else {
- channel.setCreateBy(username);
- channel.setCreateTime(currentTime);
- channel.setChannelId(null);
- }
- }).collect(Collectors.toList());
-
- if (updateSupport) {
- return updateBatchById(channels);
- } else {
- return saveBatch(channels);
- }
- }
!> 修复若依框架导入数据 Byte 类型数据报错的问题
更改 ReflectUtils.java 中的 invokeMethodByName 方法:

- ...
-
- else if (cs[i] == Byte.class) {
- args[i] = Convert.toByte(args[i]);
- }
-
- ...
配置 MySQL 批量插入
- # 批量插入
- &rewriteBatchedStatements=true
配置在 MySQL 的连接地址后面即可:

因为 MyBatisPlus 当中的批量插入,并没有达到我的预料效果,所以我们需要进行配置,配置方式如上。
