refactor: 移除多数据源

This commit is contained in:
郝先瑞
2023-05-04 00:00:10 +08:00
parent 8d3e13a294
commit 10a6bb7a40
7 changed files with 6 additions and 117 deletions

View File

@@ -1,41 +0,0 @@
package com.youlai.system.sample;
import cn.hutool.core.util.RandomUtil;
import com.youlai.system.pojo.entity.SysDictType;
import com.youlai.system.service.SysDictService;
import com.youlai.system.service.SysDictTypeService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* 动态数据源案例
*
* @author haoxr
* @date 2023/4/24
*/
@Component
@RequiredArgsConstructor
public class DynamicDataSourceSample {
private final SysDictTypeService dictTypeService;
private final SysDictService dictService;
@Transactional
public boolean updateMaster(Long dictTypeId,String newTypeCode) {
SysDictType dictType = dictTypeService.getById(dictTypeId);
String originalTypeCode = dictType.getCode();
dictType.setCode(newTypeCode);
boolean result = dictTypeService.updateById(dictType);
if (result) {
result = dictService.updateSlave(originalTypeCode, newTypeCode);
}
return result;
}
}

View File

@@ -66,12 +66,4 @@ public interface SysDictService extends IService<SysDict> {
*/
List<Option> listDictOptions(String typeCode);
/**
* 修改字典类型编码
*
* @param originalTypeCode
* @param newTypeCode
* @return
*/
boolean updateSlave(String originalTypeCode, String newTypeCode);
}

View File

@@ -3,9 +3,7 @@ package com.youlai.system.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.converter.DictConverter;
@@ -160,24 +158,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
.collect(Collectors.toList());
return options;
}
/**
* 修改字典类型编码(多数据源测试)
*
* @param originalTypeCode
* @param newTypeCode
* @return
*/
@DS("slave")
@Override
public boolean updateSlave(String originalTypeCode, String newTypeCode) {
boolean result = this.update(new LambdaUpdateWrapper<SysDict>()
.eq(SysDict::getTypeCode, originalTypeCode)
.set(SysDict::getTypeCode, newTypeCode)
);
return result;
}
}

View File

@@ -3,7 +3,6 @@ package com.youlai.system.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

View File

@@ -3,25 +3,11 @@ server:
spring:
datasource:
# 动态切换数据源
dynamic:
# 默认库,默认master
primary: master
# 是否严格模式默认false严格模式下未匹配到数据源直接报错, 非严格模式下则使用默认数据源primary所设置的数据源
strict: false
datasource:
master:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://www.youlai.tech:3306/youlai_boot?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
username: youlai
password: 123456
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://www.youlai.tech:3306/youlai_boot_slave?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
username: youlai
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://www.youlai.tech:3306/youlai_boot?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
username: youlai
password: 123456
data:
redis:
database: 6

View File

@@ -2,7 +2,4 @@ spring:
application:
name: youlai-boot
profiles:
active: dev
mvc:
path-match:
matching-strategy: ant_path_matcher
active: dev

View File

@@ -1,24 +0,0 @@
package com.youlai.system;
import cn.hutool.core.util.RandomUtil;
import com.youlai.system.sample.DynamicDataSourceSample;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
@Slf4j
class DynamicDataSourceTest {
@Autowired
private DynamicDataSourceSample dynamicDataSourceSample;
@Test
void testDynamicDataSourceWithTransactional() {
String newTypeCod = RandomUtil.randomString(RandomUtil.BASE_CHAR, 6).toUpperCase();
boolean result = dynamicDataSourceSample.updateMaster(2L, newTypeCod);
log.info("testDynamicDataSourceWithTransactional result:{}", result);
}
}