动态新增数据源成功
parent
58a14e31c2
commit
4bd634fa63
@ -0,0 +1,104 @@
|
|||||||
|
package com.lyr.common.utils;
|
||||||
|
|
||||||
|
|
||||||
|
import com.lyr.common.exception.ServiceException;
|
||||||
|
import org.apache.poi.ss.formula.functions.T;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Admin
|
||||||
|
*/
|
||||||
|
public class AssertUtil {
|
||||||
|
|
||||||
|
|
||||||
|
public static void notEmpty(Long val, String s, Integer... codes) throws ServiceException {
|
||||||
|
if (val == null) {
|
||||||
|
Integer code = (codes.length == 0) ? 500 : codes[0];
|
||||||
|
throw new ServiceException(s, code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void notEmpty(Collection c, String s, Integer... codes) throws ServiceException {
|
||||||
|
if (CollectionUtils.isEmpty(c)) {
|
||||||
|
Integer code = (codes.length == 0) ? 500 : codes[0];
|
||||||
|
throw new ServiceException(s, code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void notEmpty(String val, String s, Integer... codes) throws ServiceException {
|
||||||
|
if (StringUtils.isEmpty(val)) {
|
||||||
|
Integer code = (codes.length == 0) ? 500 : codes[0];
|
||||||
|
throw new ServiceException(s, code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void notEmpty(Object val, String s, Integer... codes) throws ServiceException {
|
||||||
|
if (val == null) {
|
||||||
|
Integer code = (codes.length == 0) ? 500 : codes[0];
|
||||||
|
throw new ServiceException(s, code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 不为空时抛出异常信息
|
||||||
|
*
|
||||||
|
* @param obj
|
||||||
|
* @param s
|
||||||
|
*/
|
||||||
|
public static void empty(Object obj, String s, Integer... codes) {
|
||||||
|
if (null != obj) {
|
||||||
|
Integer code = (codes.length == 0) ? 500 : codes[0];
|
||||||
|
throw new ServiceException(s, code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void empty(Object obj, String s, List<T> t, Integer... codes) {
|
||||||
|
if (null != obj) {
|
||||||
|
Integer code = (codes.length == 0) ? 500 : codes[0];
|
||||||
|
throw new ServiceException(s, code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void empty(Collection c, String s) {
|
||||||
|
if (!CollectionUtils.isEmpty(c)) {
|
||||||
|
throw new ServiceException(s, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void notEqual(boolean val, String s, Integer... codes) {
|
||||||
|
if (val) {
|
||||||
|
Integer code = (codes.length == 0) ? 500 : codes[0];
|
||||||
|
throw new ServiceException(s, code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void equal(boolean val, String s) {
|
||||||
|
notEqual(!val, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void isFalse(boolean b, String s, Integer... codes) {
|
||||||
|
if (b) {
|
||||||
|
Integer code = (codes.length == 0) ? 500 : codes[0];
|
||||||
|
throw new ServiceException(s, code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void isTrue(boolean b, String s, Integer... codes) throws ServiceException {
|
||||||
|
if (!b) {
|
||||||
|
Integer code = (codes.length == 0) ? 500 : codes[0];
|
||||||
|
throw new ServiceException(s, code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void test() {
|
||||||
|
throw new ServiceException("222");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
|||||||
|
package com.lyr.common.utils;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.expression.ExpressionParser;
|
||||||
|
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||||
|
import org.springframework.expression.spel.support.StandardEvaluationContext;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.lang.reflect.Parameter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* spel 工具类
|
||||||
|
*
|
||||||
|
* @author liyc
|
||||||
|
* @date 2024/10/30
|
||||||
|
* @description TODO
|
||||||
|
**/
|
||||||
|
@Component
|
||||||
|
public class SpElUtil {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
public ExpressionParser expressionParser;
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ExpressionParser expressionParser() {
|
||||||
|
return new SpelExpressionParser();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析表达式
|
||||||
|
*
|
||||||
|
* @param method
|
||||||
|
* @param args
|
||||||
|
* @param expression
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String parseExpression(Method method, Object[] args, String expression) {
|
||||||
|
StandardEvaluationContext context = new StandardEvaluationContext();
|
||||||
|
Parameter[] parameters = method.getParameters();
|
||||||
|
for (int i = 0; i < parameters.length; i++) {
|
||||||
|
Parameter parameter = parameters[i];
|
||||||
|
context.setVariable(parameter.getName(), args[i]);
|
||||||
|
}
|
||||||
|
return expressionParser.parseExpression(expression).getValue(context, String.class);
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,130 @@
|
|||||||
|
package com.lyr.framework.manager;
|
||||||
|
|
||||||
|
import com.alibaba.druid.pool.DruidDataSource;
|
||||||
|
import com.lyr.common.exception.ServiceException;
|
||||||
|
import com.lyr.common.utils.AssertUtil;
|
||||||
|
import com.lyr.framework.datasource.DynamicDataSource;
|
||||||
|
import com.lyr.framework.datasource.DynamicDataSourceContextHolder;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author liyc
|
||||||
|
* @date 2024/10/30
|
||||||
|
* @description TODO
|
||||||
|
**/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class DataSourceManager {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DynamicDataSource dynamicDataSource;
|
||||||
|
|
||||||
|
|
||||||
|
public enum RegisterType {
|
||||||
|
LOAD, ADD;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置数据源默认参数
|
||||||
|
*
|
||||||
|
* @param dataSource
|
||||||
|
* @param registerType 注册类型
|
||||||
|
*/
|
||||||
|
public void defaultDataSourceConfiguration(DruidDataSource dataSource, RegisterType registerType) {
|
||||||
|
String dataSourceName = dataSource.getName();
|
||||||
|
AssertUtil.notEmpty(dataSourceName, "数据源名称不能为空");
|
||||||
|
// 配置数据源参数
|
||||||
|
dataSource.setInitialSize(5);
|
||||||
|
dataSource.setMinIdle(10);
|
||||||
|
dataSource.setMaxActive(20);
|
||||||
|
dataSource.setMaxWait(60000);
|
||||||
|
dataSource.setConnectTimeout(30000);
|
||||||
|
dataSource.setSocketTimeout(60000);
|
||||||
|
dataSource.setTimeBetweenEvictionRunsMillis(60000);
|
||||||
|
dataSource.setMinEvictableIdleTimeMillis(300000);
|
||||||
|
dataSource.setMaxEvictableIdleTimeMillis(900000);
|
||||||
|
dataSource.setValidationQuery("SELECT 1");
|
||||||
|
dataSource.setTestOnBorrow(false);
|
||||||
|
try {
|
||||||
|
DataSource resolvedDefaultDataSource = dynamicDataSource.getResolvedDefaultDataSource();
|
||||||
|
// 设置默认数据源
|
||||||
|
dynamicDataSource.setDefaultTargetDataSource(resolvedDefaultDataSource);
|
||||||
|
// 添加数据源
|
||||||
|
dynamicDataSource.addTargetDataSource(dataSourceName, dataSource);
|
||||||
|
// 测试数据源连接
|
||||||
|
this.testDataSourceConnection(dataSource, registerType);
|
||||||
|
} catch (ServiceException e) {
|
||||||
|
dataSource.close();
|
||||||
|
throw new ServiceException(e.getMessage());
|
||||||
|
} catch (Exception ex) {
|
||||||
|
String name = registerType.name();
|
||||||
|
String message = String.format("【%s】数据源配置失败", name);
|
||||||
|
log.error(message, ex);
|
||||||
|
dataSource.close();
|
||||||
|
throw new ServiceException(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测试数据源连接
|
||||||
|
*
|
||||||
|
* @param dataSource
|
||||||
|
* @param registerType
|
||||||
|
*/
|
||||||
|
private void testDataSourceConnection(DruidDataSource dataSource, RegisterType registerType) {
|
||||||
|
String dataSourceName = dataSource.getName();
|
||||||
|
int compareTo = RegisterType.LOAD.compareTo(registerType);
|
||||||
|
String message = String.format("数据源连接测试未通过 %s",
|
||||||
|
(compareTo == 0 ? "排查表参数: data_source_config" : "请手动测试数据源是否正确"));
|
||||||
|
try (Connection connection = dataSource.getConnection()) {
|
||||||
|
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
|
||||||
|
Integer result = jdbcTemplate.queryForObject("SELECT 1", Integer.class);
|
||||||
|
if (result != null && result == 1) {
|
||||||
|
log.info(String.format("数据源连接测试通过", dataSourceName));
|
||||||
|
} else {
|
||||||
|
log.error(message);
|
||||||
|
throw new ServiceException(message);
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
log.error(message, e);
|
||||||
|
// 销毁数据源
|
||||||
|
DynamicDataSourceContextHolder.clearDataSourceType();
|
||||||
|
throw new ServiceException(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void print() {
|
||||||
|
log.debug("=======================开始打印数据源信息=============================");
|
||||||
|
// 获取默认数据源
|
||||||
|
DruidDataSource resolvedDefaultDataSource = (DruidDataSource) dynamicDataSource.getResolvedDefaultDataSource();
|
||||||
|
if (resolvedDefaultDataSource != null) {
|
||||||
|
log.debug("主数据源: {}", resolvedDefaultDataSource.getUrl());
|
||||||
|
} else {
|
||||||
|
log.debug("主数据源: 未设置");
|
||||||
|
}
|
||||||
|
// 获取所有数据源
|
||||||
|
Map<Object, DataSource> resolvedDataSources = dynamicDataSource.getResolvedDataSources();
|
||||||
|
AtomicInteger index = new AtomicInteger(0);
|
||||||
|
for (Map.Entry<Object, DataSource> entry : resolvedDataSources.entrySet()) {
|
||||||
|
DruidDataSource value = (DruidDataSource) entry.getValue();
|
||||||
|
log.debug("数据源[{}]: {} {}", index.getAndIncrement(), entry.getKey(), value.getUrl());
|
||||||
|
}
|
||||||
|
log.debug("=======================打印数据源信息结束=============================");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,57 +0,0 @@
|
|||||||
package com.lyr.framework.manager;
|
|
||||||
|
|
||||||
import com.lyr.framework.datasource.DynamicDataSource;
|
|
||||||
import org.springframework.beans.BeansException;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
|
||||||
import org.springframework.context.ApplicationContextAware;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import javax.sql.DataSource;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author liyc
|
|
||||||
* @date 2024/10/30
|
|
||||||
* @description TODO
|
|
||||||
**/
|
|
||||||
@Component
|
|
||||||
public class DataSourceManagerService implements ApplicationContextAware {
|
|
||||||
|
|
||||||
private ApplicationContext applicationContext;
|
|
||||||
@Resource
|
|
||||||
private DynamicDataSource dynamicDataSource;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
|
||||||
this.applicationContext = applicationContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void print() {
|
|
||||||
dynamicDataSource.print();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void registerDataSources(String beanName, DataSource dataSource) {
|
|
||||||
DataSource resolvedDefaultDataSource = dynamicDataSource.getResolvedDefaultDataSource();
|
|
||||||
dynamicDataSource.setDefaultTargetDataSource(resolvedDefaultDataSource);
|
|
||||||
dynamicDataSource.addTargetDataSource(beanName, dataSource);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void add() {
|
|
||||||
/* // 构建数据源
|
|
||||||
DruidDataSource dataSource = new DruidDataSource();
|
|
||||||
dataSource.setUrl("jdbc:sqlserver://192.168.3.28:1433;DatabaseName=BiDataDeYue;encrypt=true;trustServerCertificate=true;");
|
|
||||||
dataSource.setUsername("sa");
|
|
||||||
dataSource.setPassword("mssql_whdZeB");
|
|
||||||
dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
|
|
||||||
try {
|
|
||||||
DataSource resolvedDefaultDataSource = dynamicDataSource.getResolvedDefaultDataSource();
|
|
||||||
dynamicDataSource.setDefaultTargetDataSource(resolvedDefaultDataSource);
|
|
||||||
dynamicDataSource.addTargetDataSource("deYueMssql", dataSource);
|
|
||||||
} catch (BeansException e) {
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
package com.lyr.gather.domain.vo;
|
package com.lyr.gather.domain.model;
|
||||||
|
|
||||||
import com.lyr.common.annotation.Excel;
|
import com.lyr.common.annotation.Excel;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
@ -0,0 +1,108 @@
|
|||||||
|
package com.lyr.gather.domain.model;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class TSupplier {
|
||||||
|
|
||||||
|
private Integer fItemId;
|
||||||
|
private String fAddress;
|
||||||
|
private String fCity;
|
||||||
|
private String fProvince;
|
||||||
|
private String fCountry;
|
||||||
|
private String fPostalCode;
|
||||||
|
private String fPhone;
|
||||||
|
private String fFax;
|
||||||
|
private String fEmail;
|
||||||
|
private String fHomePage;
|
||||||
|
private String fCreditLimit;
|
||||||
|
private String fTaxId;
|
||||||
|
private String fBank;
|
||||||
|
private String fAccount;
|
||||||
|
private String fBrNo;
|
||||||
|
private Integer fBoundAttr;
|
||||||
|
private Integer fErpClsId;
|
||||||
|
private String fShortName;
|
||||||
|
private Integer fPriorityId;
|
||||||
|
private Integer fPGroupId;
|
||||||
|
private Integer fStatus;
|
||||||
|
private Integer fLanguageId;
|
||||||
|
private Integer fRegionId;
|
||||||
|
private Integer fTrade;
|
||||||
|
private Double fMinPoValue;
|
||||||
|
private Double fMaxDebitDate;
|
||||||
|
private String fLegalPerson;
|
||||||
|
private String fContact;
|
||||||
|
private String fContactAcct;
|
||||||
|
private String fPhoneAcct;
|
||||||
|
private String fFaxAcct;
|
||||||
|
private String fZipAcct;
|
||||||
|
private String fEmailAcct;
|
||||||
|
private String fAddrAcct;
|
||||||
|
private Float fTax;
|
||||||
|
private Integer fCyId;
|
||||||
|
private Integer fSetId;
|
||||||
|
private Integer fSetDLineId;
|
||||||
|
private String fTaxNum;
|
||||||
|
private Integer fPriceClsId;
|
||||||
|
private Integer fOperId;
|
||||||
|
private String fCiqNumber;
|
||||||
|
private Short fDeleted;
|
||||||
|
private Short fSaleMode;
|
||||||
|
private String fName;
|
||||||
|
private String fNumber;
|
||||||
|
private Integer fParentId;
|
||||||
|
private String fShortNumber;
|
||||||
|
private Integer fArAccountId;
|
||||||
|
private Integer fApAccountId;
|
||||||
|
private Integer fPreAcctId;
|
||||||
|
private BigDecimal fLastTradeAmount;
|
||||||
|
private BigDecimal fLastRPAmount;
|
||||||
|
private String fFavorPolicy;
|
||||||
|
private Integer fDepartment;
|
||||||
|
private Integer fEmployee;
|
||||||
|
private String fCorperate;
|
||||||
|
private Date fBeginTradeDate;
|
||||||
|
private Date fEndTradeDate;
|
||||||
|
private Date fLastTradeDate;
|
||||||
|
private Date fLastReceiveDate;
|
||||||
|
private String fCashDiscount;
|
||||||
|
private Integer fCurrencyId;
|
||||||
|
private Double fMaxDealAmount;
|
||||||
|
private Double fMinForeReceiveRate;
|
||||||
|
private Double fMinReserveRate;
|
||||||
|
private Double fMaxForePayAmount;
|
||||||
|
private Double fMaxForePayRate;
|
||||||
|
private Integer fDebtLevel;
|
||||||
|
private Integer fCreditDays;
|
||||||
|
private BigDecimal fValueAddRate;
|
||||||
|
private Integer fPayTaxAcctId;
|
||||||
|
private BigDecimal fDiscount;
|
||||||
|
private Integer fTypeId;
|
||||||
|
private BigDecimal fCreditAmount;
|
||||||
|
private String fCreditLevel;
|
||||||
|
private Integer fStockIdAssignee;
|
||||||
|
private Integer fBr;
|
||||||
|
private String fRegmark;
|
||||||
|
private Boolean fLicAndPermit;
|
||||||
|
private String fLicence;
|
||||||
|
private Date fPaperPeriod;
|
||||||
|
private Integer fAlarmPeriod;
|
||||||
|
private Integer fOtherArAcctId;
|
||||||
|
private Integer fOtherApAcctId;
|
||||||
|
private Integer fPreArAcctId;
|
||||||
|
private String fHelpCode;
|
||||||
|
private Timestamp fModifyTime;
|
||||||
|
private Integer fCreditDegree;
|
||||||
|
private String fRightUserId;
|
||||||
|
private Integer fPaymentTime;
|
||||||
|
private String fSMSPhoneNumber;
|
||||||
|
private String fFullName;
|
||||||
|
}
|
@ -1,7 +1,9 @@
|
|||||||
package com.lyr.gather.mapper;
|
package com.lyr.gather.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.lyr.gather.domain.vo.DataSourceConfig;
|
import com.lyr.gather.domain.model.DataSourceConfig;
|
||||||
|
|
||||||
public interface DataSourceConfigMapper extends BaseMapper<DataSourceConfig> {
|
public interface DataSourceConfigMapper extends BaseMapper<DataSourceConfig> {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.lyr.gather.mapper;
|
||||||
|
|
||||||
|
import com.lyr.common.annotation.DataSource;
|
||||||
|
import com.lyr.gather.domain.model.TSupplier;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface TSupplierMapper {
|
||||||
|
|
||||||
|
@DataSource(name = "#dataSource")
|
||||||
|
@Select("SELECT " + //
|
||||||
|
"s.FItemID, " + //
|
||||||
|
"s.FSaleMode, " + //
|
||||||
|
"s.FName, " + //
|
||||||
|
"s.FNumber, " + //
|
||||||
|
"s.FParentID, " + //
|
||||||
|
"s.FShortNumber, " + //
|
||||||
|
"s.FHelpCode, " + //
|
||||||
|
"s.FFullName " + //
|
||||||
|
"FROM t_Supplier s")
|
||||||
|
List<TSupplier> list(@Param("dataSource") String dataSource);
|
||||||
|
|
||||||
|
}
|
@ -1,11 +1,13 @@
|
|||||||
package com.lyr.gather.service;
|
package com.lyr.gather.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.lyr.gather.domain.vo.DataSourceConfig;
|
import com.lyr.gather.domain.model.DataSourceConfig;
|
||||||
|
|
||||||
public interface DataSourceConfigService extends IService<DataSourceConfig> {
|
public interface DataSourceConfigService extends IService<DataSourceConfig> {
|
||||||
|
|
||||||
void print();
|
void print();
|
||||||
|
|
||||||
void add();
|
void add();
|
||||||
|
|
||||||
|
void list(String s, Object o);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue