| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- package jnpf.database.util;
- import com.baomidou.mybatisplus.annotation.TableField;
- import jnpf.base.entity.SuperExtendEntity;
- import jnpf.database.model.entity.DbLinkEntity;
- import jnpf.database.model.interfaces.DbSourceOrDbLink;
- import jnpf.database.sql.model.DbStruct;
- import jnpf.exception.DataException;
- import jnpf.util.StringUtil;
- import lombok.Data;
- import org.springframework.beans.BeanUtils;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.stereotype.Component;
- /**
- * 数据源基础工具类
- *
- * @author JNPF开发平台组
- * @version V3.1.0
- * @copyright 引迈信息技术有限公司
- * @date 2021/3/16 8:49
- */
- @Data
- @Component
- @ConfigurationProperties(prefix = "spring.datasource")
- public class DataSourceUtil extends SuperExtendEntity.SuperExtendDescriptionEntity implements DbSourceOrDbLink {
- /**
- * 数据库类型
- */
- @TableField("f_db_type")
- private String dbType;
- /**
- * 主机ip
- */
- @TableField("f_host")
- private String host;
- /**
- * 端口
- */
- @TableField("f_port")
- private Integer port;
- /**
- * 库名
- */
- @TableField("f_service_name")
- private String dbName;
- /**
- * 用户
- */
- @TableField("f_user_name")
- private String userName;
- /**
- * 密码
- */
- @TableField("f_password")
- private String password;
- /**
- * 表空间
- */
- @TableField(value = "f_table_space")
- private String dbTableSpace;
- /**
- * 模式
- */
- @TableField(value = "f_db_schema")
- private String dbSchema;
- /**
- * 数据连接jdbc-url参数
- */
- @TableField(exist = false)
- private String urlParams;
- /**
- * url地址
- */
- @TableField(exist = false)
- private String url;
- /**
- * 数据连接jdbc-url参数
- */
- @TableField(exist = false)
- private String prepareUrl;
- /**
- * 驱动包
- */
- @TableField(exist = false)
- private String driver;
- /**
- * oracle多方式登录参数
- */
- @TableField(value = "f_oracle_param")
- private String oracleParam;
- public String getAutoUsername() throws DataException {
- if(StringUtil.isEmpty(this.userName)){
- return DbTypeUtil.getEncodeDb(this.dbType).getDbaUsername();
- }else {
- return this.userName;
- }
- }
- public String getAutoPassword() throws DataException {
- if(StringUtil.isEmpty(this.password)){
- return getAutoUsername();
- }else {
- return this.password;
- }
- }
- /**
- * -- 这里的参数dataSourceUtil是spring托管的全局唯一变量,
- * New对象防止数据源互串,防止Bean覆盖
- * 获取数据源参数传参对象
- * 注意:此处方法不能命名为 get开头的名字,
- * 会出现copy bean转换时候的错误
- */
- public DbLinkEntity init(){
- return init(null);
- }
- /**
- * 多租户:获取数据源参数传参对象
- * @param dbName 库名
- * @return ignore
- */
- public DbLinkEntity init(String dbName){
- DbLinkEntity dbLinkEntity = new DbLinkEntity();
- BeanUtils.copyProperties(this, dbLinkEntity);
- if(StringUtil.isNotEmpty(dbName)){
- dbLinkEntity.setDbName(dbName);
- }
- return dbLinkEntity;
- }
- /**
- * 数据基础结构信息
- */
- public DbStruct getDbStruct(){
- DbStruct dbStruct = new DbStruct();
- // 用户名对应 (当数据库为Oracle与DM的时,schema默认与用户同名)
- dbStruct.setUserName(getUserName());
- dbStruct.setOracleDbSchema(getUserName());
- dbStruct.setDmDbSchema(getUserName());
- // 表空间
- dbStruct.setDbTableSpace(getDbTableSpace());
- //库名
- dbStruct.setMysqlDbName(getDbName());
- dbStruct.setSqlServerDbName(getDbName());
- dbStruct.setKingBaseDbName(getDbName());
- dbStruct.setPostGreDbName(getDbName());
- // 模式
- if(StringUtil.isNotEmpty(getDbSchema())){
- dbStruct.setOracleDbSchema(getDbSchema());
- dbStruct.setDmDbSchema(getDbSchema());
- dbStruct.setSqlServerDbSchema(getDbSchema());
- dbStruct.setKingBaseDbSchema(getDbSchema());
- dbStruct.setPostGreDbSchema(getDbSchema());
- }
- dbStruct.setOracleParam(getOracleParam());
- return dbStruct;
- }
- }
|