From 3e0b4e60a8baadd7df495163de9441b0d884a629 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Sat, 19 Dec 2020 16:32:17 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90dbs=E3=80=91=E6=95=B4=E7=90=86dbs?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E7=9A=84=E5=AD=97=E6=AE=B5=E5=92=8C=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ctory.java => DruidDatasourceFactory.java} | 4 +- .../GunsDataSourceAutoConfiguration.java | 6 +- .../dsctn/modular/entity/DatabaseInfo.java | 28 +++-- ...ctory.java => DruidPropertiesFactory.java} | 4 +- .../dsctn/modular/pojo/DatabaseInfoParam.java | 28 ++--- .../service/impl/DatabaseInfoServiceImpl.java | 110 ++++++++++-------- .../dsctn/context/DataSourceContext.java | 6 +- .../listener/DataSourceInitListener.java | 8 +- 8 files changed, 103 insertions(+), 91 deletions(-) rename kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/{DruidFactory.java => DruidDatasourceFactory.java} (98%) rename kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/factory/{DruidFactory.java => DruidPropertiesFactory.java} (88%) diff --git a/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/DruidFactory.java b/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/DruidDatasourceFactory.java similarity index 98% rename from kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/DruidFactory.java rename to kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/DruidDatasourceFactory.java index 5b87d5da1..b651ae932 100644 --- a/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/DruidFactory.java +++ b/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/DruidDatasourceFactory.java @@ -1,9 +1,9 @@ package cn.stylefeng.roses.kernel.db.api.factory; import cn.hutool.core.util.StrUtil; -import com.alibaba.druid.pool.DruidDataSource; import cn.stylefeng.roses.kernel.db.api.enums.DbTypeEnum; import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties; +import com.alibaba.druid.pool.DruidDataSource; import lombok.extern.slf4j.Slf4j; import java.sql.SQLException; @@ -15,7 +15,7 @@ import java.sql.SQLException; * @date 2020/10/16 15:59 */ @Slf4j -public class DruidFactory { +public class DruidDatasourceFactory { /** * 创建druid连接池 diff --git a/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDataSourceAutoConfiguration.java b/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDataSourceAutoConfiguration.java index 875c29fb4..cc97ee32f 100644 --- a/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDataSourceAutoConfiguration.java +++ b/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDataSourceAutoConfiguration.java @@ -1,8 +1,8 @@ package cn.stylefeng.roses.kernel.db.starter; -import com.alibaba.druid.pool.DruidDataSource; -import cn.stylefeng.roses.kernel.db.api.factory.DruidFactory; +import cn.stylefeng.roses.kernel.db.api.factory.DruidDatasourceFactory; import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties; +import com.alibaba.druid.pool.DruidDataSource; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -32,7 +32,7 @@ public class GunsDataSourceAutoConfiguration { @Bean(initMethod = "init") @ConditionalOnMissingBean(DataSource.class) public DruidDataSource druidDataSource(DruidProperties druidProperties) { - return DruidFactory.createDruidDataSource(druidProperties); + return DruidDatasourceFactory.createDruidDataSource(druidProperties); } } diff --git a/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/entity/DatabaseInfo.java b/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/entity/DatabaseInfo.java index 62712521e..e68757c59 100644 --- a/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/entity/DatabaseInfo.java +++ b/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/entity/DatabaseInfo.java @@ -1,10 +1,10 @@ package cn.stylefeng.roses.kernel.dsctn.modular.entity; +import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -24,8 +24,8 @@ public class DatabaseInfo extends BaseEntity { /** * 主键id */ - @TableId(value = "id", type = IdType.ASSIGN_ID) - private Long id; + @TableId(value = "db_id", type = IdType.ASSIGN_ID) + private Long dbId; /** * 数据库名称(英文名称) @@ -39,11 +39,17 @@ public class DatabaseInfo extends BaseEntity { @TableField("jdbc_driver") private String jdbcDriver; + /** + * jdbc的url + */ + @TableField("jdbc_url") + private String jdbcUrl; + /** * 数据库连接的账号 */ - @TableField("user_name") - private String userName; + @TableField("username") + private String username; /** * 数据库连接密码 @@ -51,16 +57,16 @@ public class DatabaseInfo extends BaseEntity { @TableField("password") private String password; - /** - * jdbc的url - */ - @TableField("jdbc_url") - private String jdbcUrl; - /** * 备注,摘要 */ @TableField("remarks") private String remarks; + /** + * 是否删除,Y-被删除,N-未删除 + */ + @TableField("del_flag") + private String delFlag; + } diff --git a/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/factory/DruidFactory.java b/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/factory/DruidPropertiesFactory.java similarity index 88% rename from kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/factory/DruidFactory.java rename to kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/factory/DruidPropertiesFactory.java index e3b967e2b..8f5b9b45d 100644 --- a/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/factory/DruidFactory.java +++ b/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/factory/DruidPropertiesFactory.java @@ -9,7 +9,7 @@ import cn.stylefeng.roses.kernel.dsctn.modular.entity.DatabaseInfo; * @author fengshuonan * @date 2020/11/1 21:44 */ -public class DruidFactory { +public class DruidPropertiesFactory { /** * 创建druid配置 @@ -20,7 +20,7 @@ public class DruidFactory { public static DruidProperties createDruidProperties(DatabaseInfo databaseInfo) { DruidProperties druidProperties = new DruidProperties(); druidProperties.setDriverClassName(databaseInfo.getJdbcDriver()); - druidProperties.setUsername(databaseInfo.getUserName()); + druidProperties.setUsername(databaseInfo.getUsername()); druidProperties.setPassword(databaseInfo.getPassword()); druidProperties.setUrl(databaseInfo.getJdbcUrl()); return druidProperties; diff --git a/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/pojo/DatabaseInfoParam.java b/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/pojo/DatabaseInfoParam.java index 640a36335..ff6ec5312 100644 --- a/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/pojo/DatabaseInfoParam.java +++ b/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/pojo/DatabaseInfoParam.java @@ -7,7 +7,6 @@ import lombok.EqualsAndHashCode; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.util.Date; /** * 数据库信息表 @@ -24,15 +23,15 @@ public class DatabaseInfoParam extends BaseRequest { /** * 主键id */ - @NotNull(message = "id不能为空,请检查id参数", groups = {edit.class, delete.class, detail.class}) - private Long id; + @NotNull(message = "dbId不能为空", groups = {edit.class, delete.class, detail.class}) + private Long dbId; /** * 数据库名称(英文名称) */ - @NotBlank(message = "数据库名称不能为空,请检查dbName参数", groups = {add.class, edit.class}) + @NotBlank(message = "数据库名称不能为空", groups = {add.class, edit.class}) @TableUniqueValue( - message = "数据库名称存在重复,请检查dbName参数", + message = "数据库名称存在重复", groups = {add.class, edit.class}, tableName = "sys_database_info", columnName = "db_name") @@ -41,9 +40,15 @@ public class DatabaseInfoParam extends BaseRequest { /** * jdbc的驱动类型 */ - @NotBlank(message = "jdbc的驱动类型,请检查jdbcDriver参数", groups = {add.class, edit.class}) + @NotBlank(message = "jdbc的驱动类型为空", groups = {add.class, edit.class}) private String jdbcDriver; + /** + * jdbc的url + */ + @NotBlank(message = "jdbc的url,请检查jdbcUrl参数", groups = {add.class, edit.class}) + private String jdbcUrl; + /** * 数据库连接的账号 */ @@ -56,20 +61,9 @@ public class DatabaseInfoParam extends BaseRequest { @NotBlank(message = "数据库连接密码,请检查password参数", groups = {add.class, edit.class}) private String password; - /** - * jdbc的url - */ - @NotBlank(message = "jdbc的url,请检查jdbcUrl参数", groups = {add.class, edit.class}) - private String jdbcUrl; - /** * 备注,摘要 */ private String remarks; - /** - * 创建时间 - */ - private Date createTime; - } diff --git a/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/impl/DatabaseInfoServiceImpl.java b/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/impl/DatabaseInfoServiceImpl.java index 9f2852873..abd856933 100644 --- a/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/impl/DatabaseInfoServiceImpl.java +++ b/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/impl/DatabaseInfoServiceImpl.java @@ -3,21 +3,24 @@ package cn.stylefeng.roses.kernel.dsctn.modular.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.stylefeng.roses.kernel.dsctn.modular.entity.DatabaseInfo; -import cn.stylefeng.roses.kernel.dsctn.modular.factory.DruidFactory; -import com.alibaba.druid.pool.DruidDataSource; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import cn.stylefeng.roses.kernel.db.api.factory.DruidDatasourceFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.dsctn.api.exception.DatasourceContainerException; import cn.stylefeng.roses.kernel.dsctn.context.DataSourceContext; +import cn.stylefeng.roses.kernel.dsctn.modular.entity.DatabaseInfo; +import cn.stylefeng.roses.kernel.dsctn.modular.factory.DruidPropertiesFactory; import cn.stylefeng.roses.kernel.dsctn.modular.mapper.DatabaseInfoMapper; import cn.stylefeng.roses.kernel.dsctn.modular.pojo.DatabaseInfoParam; import cn.stylefeng.roses.kernel.dsctn.modular.service.DatabaseInfoService; +import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; +import com.alibaba.druid.pool.DruidDataSource; +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 org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -51,35 +54,17 @@ public class DatabaseInfoServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(DatabaseInfo::getDelFlag, YesOrNotEnum.Y.getCode()); + updateWrapper.eq(DatabaseInfo::getDbId, databaseInfoParam.getDbId()); + this.update(updateWrapper); // 删除容器中的数据源记录 DataSourceContext.removeDataSource(databaseInfo.getDbName()); @@ -151,6 +124,9 @@ public class DatabaseInfoServiceImpl extends ServiceImpl result = this.page(PageFactory.defaultPage(), queryWrapper); @@ -200,4 +176,40 @@ public class DatabaseInfoServiceImpl extends ServiceImpl