Browse Source

7.30地区部分修改以及导出的封装

huangqizheng/feature-20250801114957-导出
huangqizhen 2 weeks ago
parent
commit
6ec8e59080
  1. 7
      src/main/java/com/example/demo/Export/ExportService.java
  2. 25
      src/main/java/com/example/demo/Export/ExportServiceImpl.java
  3. 2
      src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java
  4. 18
      src/main/java/com/example/demo/controller/coin/ExportController.java
  5. 37
      src/main/java/com/example/demo/domain/DTO/LiveDTO.java
  6. 2
      src/main/java/com/example/demo/service/coin/ExportExcelService.java
  7. 84
      src/main/java/com/example/demo/service/listen/AiEmotionExportListener.java
  8. 1
      src/main/java/com/example/demo/service/listen/BaseMessageListener.java
  9. 42
      src/main/java/com/example/demo/service/listen/ConsumeListener.java
  10. 50
      src/main/java/com/example/demo/service/listen/GoldDetailListener.java
  11. 43
      src/main/java/com/example/demo/service/listen/GoldListener.java
  12. 38
      src/main/java/com/example/demo/service/listen/LiveListener.java
  13. 66
      src/main/java/com/example/demo/service/listen/RechargeListener.java
  14. 44
      src/main/java/com/example/demo/service/listen/RefundListener.java
  15. 19
      src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java
  16. 2
      src/main/resources/application-dev.yml
  17. 8
      src/main/resources/application-test.yml
  18. 8
      src/main/resources/application.yml

7
src/main/java/com/example/demo/Export/ExportService.java

@ -1,9 +1,6 @@
package com.example.demo.Export;
import com.example.demo.domain.DTO.ConsumeDTO;
import com.example.demo.domain.DTO.GoldDetailDTO;
import com.example.demo.domain.DTO.RechargeDTO;
import com.example.demo.domain.DTO.RefundDTO;
import com.example.demo.domain.DTO.*;
import com.example.demo.domain.vo.coin.Result;
/**
@ -21,5 +18,7 @@ public interface ExportService {
Result addExportRefund(RefundDTO dto);
//消费导出
Result addExportConsume(ConsumeDTO dto);
//金豆直播导出
Result addExportLive(LiveDTO dto);
}

25
src/main/java/com/example/demo/Export/ExportServiceImpl.java

@ -2,6 +2,7 @@ package com.example.demo.Export;
import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.DTO.ConsumeDTO;
import com.example.demo.domain.DTO.LiveDTO;
import com.example.demo.domain.DTO.RechargeDTO;
import com.example.demo.domain.DTO.RefundDTO;
import com.example.demo.domain.entity.Admin;
@ -46,7 +47,7 @@ public class ExportServiceImpl implements ExportService {
* @param dto 数据传输对象 (RechargeDTO, RefundDTO, ConsumeDTO)
* @param exportType 导出类型 ("充值明细", "退款明细", "消耗明细")
* @param queueName Redis 队列名称
* @param requestData 请求数据字段名 ("rechargeUser", "refundUser", "consumeUser")
* @param requestData 请求数据字段名 ("rechargeUser", "refundUser", "consumeUser","liveUser")
* @return Result
*/
private Result addExport(Object dto, String exportType, String queueName, String requestData) {
@ -101,6 +102,11 @@ public class ExportServiceImpl implements ExportService {
consumeDTO.setUrl("");
consumeDTO.setFileName(generateFileName("消耗明细", adminName));
consumeDTO.setDataNum(0);
} else if (dto instanceof LiveDTO liveDTO) {
liveDTO.setAccount(Integer.valueOf(account));
liveDTO.setUrl("");
liveDTO.setFileName(generateFileName("直播明细", adminName));
liveDTO.setDataNum(0);
}
}
@ -138,6 +144,16 @@ public class ExportServiceImpl implements ExportService {
consumeDTO.getFileName(),
consumeDTO.getDataNum()
);
} else if(dto instanceof LiveDTO liveDTO){
goldDetailMapper.insertExportRecord(
idHolder,
account,
liveDTO.getType(),
liveDTO.getState(),
liveDTO.getUrl(),
liveDTO.getFileName(),
liveDTO.getDataNum()
);
}
}
@ -156,6 +172,8 @@ public class ExportServiceImpl implements ExportService {
requestData.put(requestDataKey, refundDTO.getRefundUser());
} else if (dto instanceof ConsumeDTO consumeDTO) {
requestData.put(requestDataKey, consumeDTO.getConsumeUser());
} else if(dto instanceof LiveDTO liveDTO){
requestData.put(requestDataKey, liveDTO.getBeanConsumeLive());
}
exportData.put("requestData", requestData);
@ -186,4 +204,9 @@ public class ExportServiceImpl implements ExportService {
public Result addExportConsume(ConsumeDTO dto) {
return addExport(dto, "消耗明细", "consume:queue:export_queue", "consumeUser");
}
@Override
public Result addExportLive(LiveDTO dto) {
return addExport(dto, "直播明细", "live:queue:export_queue", "beanConsumeLive");
}
}

2
src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java

@ -29,7 +29,7 @@ public class Mysql3DataSourceConfig {
@Qualifier("globalConfiguration3") org.apache.ibatis.session.Configuration globalConfiguration3) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:payMapper/*.xml"));
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:paymapper/*.xml"));
sessionFactory.setConfiguration(globalConfiguration3);
return sessionFactory.getObject();
}

18
src/main/java/com/example/demo/controller/coin/ExportController.java

@ -4,6 +4,7 @@ import com.example.demo.Util.BusinessException;
import com.example.demo.Util.JWTUtil;
import com.example.demo.Util.RedisLockUtil;
import com.example.demo.domain.DTO.ConsumeDTO;
import com.example.demo.domain.DTO.LiveDTO;
import com.example.demo.domain.DTO.RechargeDTO;
import com.example.demo.domain.DTO.RefundDTO;
import com.example.demo.domain.entity.Admin;
@ -100,4 +101,21 @@ public class ExportController {
redisLockUtil.unlock(lockKey, requestId);
}
}
@PostMapping("/exportLive")
public Result export(@Valid @RequestBody LiveDTO dto) {
String lockKey = "export:lock:" + dto.getToken();
String requestId = UUID.randomUUID().toString();
long expireTime = 5000;
try {
// 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) {
throw new BusinessException("操作太频繁,请稍后重试");
}
// 执行业务逻辑
return exportService.addExportLive(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
}

37
src/main/java/com/example/demo/domain/DTO/LiveDTO.java

@ -0,0 +1,37 @@
package com.example.demo.domain.DTO;
import com.example.demo.domain.vo.bean.BeanConsumeLive;
import com.example.demo.domain.vo.coin.ConsumeUser;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: GOLD
* @ClassName LiveDTO
* @description:
* @author: huangqizhen
* @create: 202507-31 17:28
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class LiveDTO {
private String token;
private String url = "";
private String fileName = "";
private Integer sort = 0;
private String field = "";
private Integer account;
private Integer type = 6; //类型
private Integer state = 0; //状态
private String text = ""; //关键词搜索
private Integer dataNum = 0;
private String deptid = "";
@NotNull(message = "page不能为空")
private Integer page = 1;
@NotNull(message = "pageSize不能为空")
private Integer pageSize = 20;
private BeanConsumeLive beanConsumeLive;
}

2
src/main/java/com/example/demo/service/coin/ExportExcelService.java

@ -22,6 +22,8 @@ public interface ExportExcelService {
Exception rechargeExcel(String message) throws Exception;
Exception consumeExcel(String message) throws Exception;
Exception refundExcel(String message) throws Exception;
Exception LiveExcel(String message) throws Exception;
List<Export> getExcel(Export export);
@Transactional

84
src/main/java/com/example/demo/service/listen/AiEmotionExportListener.java

@ -1,84 +0,0 @@
package com.example.demo.service.listen;
import cn.hutool.core.util.StrUtil;
import com.example.demo.Util.ExecutionContextUtil;
import com.example.demo.Util.FeiShuAlertUtil;
import com.example.demo.Util.RedisUtil;
import com.example.demo.domain.vo.coin.ExecutionContext;
import com.example.demo.service.coin.ExportExcelService;
import com.example.demo.service.queue.AbstractMessageListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import static java.lang.Thread.sleep;
@Component
public class AiEmotionExportListener extends AbstractMessageListener<String> {
//注入ExportExcelService
@Autowired
private ExportExcelService exportExcelService;
@Autowired
public AiEmotionExportListener(
RedisUtil redisQueueUtil
) {
super(redisQueueUtil, "hwgold:queue:export_queue");
System.out.println("监听器已启动,队列: ");
}
@Override
protected void handleMessage(String message) {
if (StrUtil.isBlank(message)) {
System.err.println("redis消息队列数据为空" + message);
}
try {
Thread.sleep(5000);
exportExcelService.handleExcelExportData(message);
} catch (Exception e) {
logError(e, message);
throw new RuntimeException("Failed to process HWGOLD export: " + e.getMessage(), e);
}
}
private void logError(Exception e, String message) {
System.err.println("Export data listener exception: " + e.getMessage());
e.printStackTrace();
try {
ExecutionContext context = ExecutionContextUtil.getExecutionContext();
String cause = "";
if (e.getCause() != null) {
cause = e.getCause().getMessage();
}
FeiShuAlertUtil.sendAlertMessage(
context,
e.getStackTrace()[0].getFileName(),
e.getStackTrace()[0].getLineNumber(),
"HWGOLD Export Error: " + e.getMessage() + " 底层错误: " + cause ,
"Failed message: " + message
);
} catch (Exception alertEx) {
System.err.println("Failed to send Feishu alert: " + alertEx.getMessage());
}
}
@Override
protected void handleError(Exception e, String message) {
System.err.println("处理消息失败: " + message);
e.printStackTrace();
}
}

1
src/main/java/com/example/demo/service/listen/BaseMessageListener.java

@ -63,4 +63,5 @@ public abstract class BaseMessageListener<T> extends AbstractMessageListener<T>
System.err.println("Failed to send Feishu alert: " + alertEx.getMessage());
}
}
}

42
src/main/java/com/example/demo/service/listen/ConsumeListener.java

@ -19,61 +19,27 @@ import org.springframework.stereotype.Component;
* @Version 1.0
**/
@Component
public class ConsumeListener extends AbstractMessageListener<String> {
public class ConsumeListener extends BaseMessageListener<String> {
//注入ExportExcelService
@Autowired
private ExportExcelService exportService;
@Autowired
public ConsumeListener(
RedisUtil redisQueueUtil
) {
public ConsumeListener(RedisUtil redisQueueUtil) {
super(redisQueueUtil, "consume:queue:export_queue");
System.out.println("监听器已启动,队列: ");
}
@Override
protected void handleMessage(String message) {
if (StrUtil.isBlank(message)) {
System.err.println("redis消息队列数据为空" + message);
}
validateMessage( message);
try {
Thread.sleep(5000);
exportService.consumeExcel(message);
} catch (Exception e) {
logError(e, message);
throw new RuntimeException("Failed to process HWGOLD export: " + e.getMessage(), e);
}
handleException(e, message);
}
private void logError(Exception e, String message) {
System.err.println("Export data listener exception: " + e.getMessage());
e.printStackTrace();
try {
ExecutionContext context = ExecutionContextUtil.getExecutionContext();
String cause = "";
if (e.getCause() != null) {
cause = e.getCause().getMessage();
}
FeiShuAlertUtil.sendAlertMessage(
context,
e.getStackTrace()[0].getFileName(),
e.getStackTrace()[0].getLineNumber(),
"HWGOLD Export Error: " + e.getMessage() + " 底层错误: " + cause ,
"Failed message: " + message
);
} catch (Exception alertEx) {
System.err.println("Failed to send Feishu alert: " + alertEx.getMessage());
}
}
@Override
protected void handleError(Exception e, String message) {
System.err.println("处理消息失败: " + message);
e.printStackTrace();
}
}

50
src/main/java/com/example/demo/service/listen/GoldDetailListener.java

@ -0,0 +1,50 @@
package com.example.demo.service.listen;
import cn.hutool.core.util.StrUtil;
import com.example.demo.Util.ExecutionContextUtil;
import com.example.demo.Util.FeiShuAlertUtil;
import com.example.demo.Util.RedisUtil;
import com.example.demo.domain.vo.coin.ExecutionContext;
import com.example.demo.service.coin.ExportExcelService;
import com.example.demo.service.queue.AbstractMessageListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import static java.lang.Thread.sleep;
@Component
public class GoldDetailListener extends BaseMessageListener<String> {
//注入ExportExcelService
@Autowired
private ExportExcelService exportExcelService;
@Autowired
public GoldDetailListener(RedisUtil redisQueueUtil) {
super(redisQueueUtil, "hwgold:queue:export_queue");
}
@Override
protected void handleMessage(String message) {
validateMessage( message);
try {
Thread.sleep(5000);
exportExcelService.handleExcelExportData(message);
} catch (Exception e) {
handleException(e, message);
}
}
}

43
src/main/java/com/example/demo/service/listen/GoldListener.java

@ -20,61 +20,26 @@ import org.springframework.stereotype.Component;
* @Version 1.0
**/
@Component
public class GoldListener extends AbstractMessageListener<String> {
public class GoldListener extends BaseMessageListener<String> {
//注入ExportExcelService
@Autowired
private ExportExcelService exportExcelService;
@Autowired
public GoldListener(
RedisUtil redisQueueUtil
) {
public GoldListener(RedisUtil redisQueueUtil) {
super(redisQueueUtil, "gold:queue:export_queue");
System.out.println("监听器已启动,队列: ");
}
@Override
protected void handleMessage(String message) {
if (StrUtil.isBlank(message)) {
System.err.println("redis消息队列数据为空" + message);
}
validateMessage( message);
try {
Thread.sleep(5000);
exportExcelService.handleExcel(message);
} catch (Exception e) {
logError(e, message);
throw new RuntimeException("Failed to process HWGOLD export: " + e.getMessage(), e);
}
handleException(e, message);
}
private void logError(Exception e, String message) {
System.err.println("Export data listener exception: " + e.getMessage());
e.printStackTrace();
try {
ExecutionContext context = ExecutionContextUtil.getExecutionContext();
String cause = "";
if (e.getCause() != null) {
cause = e.getCause().getMessage();
}
FeiShuAlertUtil.sendAlertMessage(
context,
e.getStackTrace()[0].getFileName(),
e.getStackTrace()[0].getLineNumber(),
"HWGOLD Export Error: " + e.getMessage() + " 底层错误: " + cause ,
"Failed message: " + message
);
} catch (Exception alertEx) {
System.err.println("Failed to send Feishu alert: " + alertEx.getMessage());
}
}
@Override
protected void handleError(Exception e, String message) {
System.err.println("处理消息失败: " + message);
e.printStackTrace();
}
}

38
src/main/java/com/example/demo/service/listen/LiveListener.java

@ -0,0 +1,38 @@
package com.example.demo.service.listen;
import com.example.demo.Util.RedisUtil;
import com.example.demo.service.coin.ExportExcelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @program: GOLD
* @ClassName LiveListener
* @description:
* @author: huangqizhen
* @create: 202507-31 17:53
* @Version 1.0
**/
@Component
public class LiveListener extends BaseMessageListener<String>{
@Autowired
private ExportExcelService exportExcelService;
@Autowired
public LiveListener(RedisUtil redisQueueUtil) {
super(redisQueueUtil, "live:queue:export_queue");
}
@Override
protected void handleMessage(String message) {
validateMessage( message);
try {
Thread.sleep(5000);
exportExcelService.LiveExcel(message);
} catch (Exception e) {
handleException(e, message);
}
}
}

66
src/main/java/com/example/demo/service/listen/RechargeListener.java

@ -1,80 +1,32 @@
package com.example.demo.service.listen;
import cn.hutool.core.util.StrUtil;
import com.example.demo.Util.ExecutionContextUtil;
import com.example.demo.Util.FeiShuAlertUtil;
import com.example.demo.Util.RedisUtil;
import com.example.demo.domain.vo.coin.ExecutionContext;
import com.example.demo.service.coin.ExportExcelService;
import com.example.demo.service.queue.AbstractMessageListener;
import com.example.demo.service.listen.BaseMessageListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @program: GOLD
* @ClassName RechargeListener
* @description:
* @author: huangqizhen
* @create: 202507-01 15:46
* @Version 1.0
**/
import static org.ehcache.core.exceptions.StorePassThroughException.handleException;
@Component
public class RechargeListener extends AbstractMessageListener<String> {
//注入ExportExcelService
public class RechargeListener extends BaseMessageListener<String> {
@Autowired
private ExportExcelService exportService;
@Autowired
public RechargeListener(
RedisUtil redisQueueUtil
) {
public RechargeListener(RedisUtil redisQueueUtil) {
super(redisQueueUtil, "recharge:queue:export_queue");
System.out.println("监听器已启动,队列: ");
}
@Override
protected void handleMessage(String message) {
if (StrUtil.isBlank(message)) {
System.err.println("redis消息队列数据为空" + message);
}
validateMessage(message); // 验证消息
try {
Thread.sleep(5000);
Thread.sleep(5000); // 模拟延迟处理
exportService.rechargeExcel(message);
} catch (Exception e) {
logError(e, message);
throw new RuntimeException("Failed to process HWGOLD export: " + e.getMessage(), e);
}
}
private void logError(Exception e, String message) {
System.err.println("Export data listener exception: " + e.getMessage());
e.printStackTrace();
try {
ExecutionContext context = ExecutionContextUtil.getExecutionContext();
String cause = "";
if (e.getCause() != null) {
cause = e.getCause().getMessage();
}
FeiShuAlertUtil.sendAlertMessage(
context,
e.getStackTrace()[0].getFileName(),
e.getStackTrace()[0].getLineNumber(),
"HWGOLD Export Error: " + e.getMessage() + " 底层错误: " + cause ,
"Failed message: " + message
);
} catch (Exception alertEx) {
System.err.println("Failed to send Feishu alert: " + alertEx.getMessage());
}
handleException(e, message); // 统一异常处理
}
@Override
protected void handleError(Exception e, String message) {
System.err.println("处理消息失败: " + message);
e.printStackTrace();
}
}

44
src/main/java/com/example/demo/service/listen/RefundListener.java

@ -19,62 +19,26 @@ import org.springframework.stereotype.Component;
* @Version 1.0
**/
@Component
public class RefundListener extends AbstractMessageListener<String> {
public class RefundListener extends BaseMessageListener<String> {
//注入ExportExcelService
@Autowired
private ExportExcelService exportExcelService;
@Autowired
public RefundListener(
RedisUtil redisQueueUtil
) {
public RefundListener(RedisUtil redisQueueUtil) {
super(redisQueueUtil, "refund:queue:export_queue");
System.out.println("监听器已启动,队列: ");
}
@Override
protected void handleMessage(String message) {
if (StrUtil.isBlank(message)) {
System.err.println("redis消息队列数据为空" + message);
}
validateMessage( message);
try {
Thread.sleep(5000);
exportExcelService.refundExcel(message);
} catch (Exception e) {
logError(e, message);
throw new RuntimeException("Failed to process HWGOLD export: " + e.getMessage(), e);
}
handleException(e, message);
}
private void logError(Exception e, String message) {
System.err.println("Export data listener exception: " + e.getMessage());
e.printStackTrace();
try {
ExecutionContext context = ExecutionContextUtil.getExecutionContext();
String cause = "";
if (e.getCause() != null) {
cause = e.getCause().getMessage();
}
FeiShuAlertUtil.sendAlertMessage(
context,
e.getStackTrace()[0].getFileName(),
e.getStackTrace()[0].getLineNumber(),
"HWGOLD Export Error: " + e.getMessage() + " 底层错误: " + cause ,
"Failed message: " + message
);
} catch (Exception alertEx) {
System.err.println("Failed to send Feishu alert: " + alertEx.getMessage());
}
}
@Override
protected void handleError(Exception e, String message) {
System.err.println("处理消息失败: " + message);
e.printStackTrace();
}
}

19
src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java

@ -6,6 +6,7 @@ import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.example.demo.Util.ExcelUploadUtil;
import com.example.demo.Util.JWTUtil;
import com.example.demo.controller.bean.BeanConsumeController;
import com.example.demo.controller.coin.ConsumeController;
import com.example.demo.controller.coin.GoldDetailController;
import com.example.demo.controller.coin.RechargeController;
@ -14,6 +15,8 @@ import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.Export;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.export.Goldmingxi;
import com.example.demo.domain.vo.bean.BeanConsumeLive;
import com.example.demo.domain.vo.bean.BeanPage;
import com.example.demo.domain.vo.coin.*;
import com.example.demo.mapper.coin.ExportMapper;
@ -66,6 +69,8 @@ public class ExportExcelServiceImpl implements ExportExcelService {
@Autowired
private ConsumeController consumeController;
@Autowired
private BeanConsumeController beanConsumeController;
@Autowired
private AuthenticationManager authenticationManager;
// 每页查询的数据量
private static final int PAGE_SIZE = 1000;
@ -134,6 +139,17 @@ public class ExportExcelServiceImpl implements ExportExcelService {
}
@Override
public Exception LiveExcel(String message) throws Exception {
return exportExcelGeneric(message, "liveUser", page -> {
try {
return beanConsumeController.selectLiveBy(page);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
@Override
public List<Export> getExcel(Export export) {
List<Export> list = exportMapper.getExportRecord(export.getAccount(),export.getType());
System.out.println(list+"-------------------------------");
@ -141,6 +157,7 @@ public class ExportExcelServiceImpl implements ExportExcelService {
}
/**
* 验证导出记录
*/
@ -331,6 +348,8 @@ public class ExportExcelServiceImpl implements ExportExcelService {
return ConsumeUser.class;
case "refundUser":
return RefundUser.class;
case "liveUser":
return BeanConsumeLive.class;
default:
throw new IllegalArgumentException("不支持的导出类型: " + exportType);
}

2
src/main/resources/application-dev.yml

@ -53,7 +53,7 @@ feishu:
url: https://open.feishu.cn/open-apis/bot/v2/hook/384c78aa-8df1-498b-9c47-04e890ed9877
server:
port: 8081
port: 10704
logging:
level:

8
src/main/resources/application-test.yml

@ -35,9 +35,9 @@ spring:
data:
redis:
database: 1
host: 18.143.76.3
port: 10703
password: Ngc0FYUTA6h3wC5J
host: localhost
port: 6379
password: 123456
lettuce:
pool:
@ -56,7 +56,7 @@ feishu:
server:
port: 10704
port: 8081
logging:
level:

8
src/main/resources/application.yml

@ -1,6 +1,6 @@
spring:
profiles:
active: dev
active: test
jackson:
deserialization:
fail-on-unknown-properties: false
@ -28,7 +28,7 @@ spring:
password: 4hHmzxZH4rF4c5xr
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
pool-name: mysql2HikariCP
pool-name: mysql3HikariCP
maximum-pool-size: 10
sqlserver1:
jdbc-url: jdbc:sqlserver://52.76.43.43:1433;databaseName=hwhcGold;encrypt=true;sslProtocol=TLSv1;trustServerCertificate=true;
@ -69,10 +69,10 @@ mybatis:
configuration:
mysql1:
map-underscore-to-camel-case: true
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
sqlserver1:
map-underscore-to-camel-case: true
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mysql2:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

Loading…
Cancel
Save