| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package jnpf.database.source.impl;
- import com.baomidou.mybatisplus.annotation.DbType;
- import jnpf.database.constant.DbAliasConst;
- import jnpf.database.constant.DbConst;
- import jnpf.database.enums.DbAliasEnum;
- import jnpf.database.model.dbfield.DbFieldModel;
- import jnpf.database.source.DbBase;
- import jnpf.database.sql.model.DbStruct;
- import jnpf.util.StringUtil;
- import jnpf.util.TenantHolder;
- import java.sql.ResultSet;
- import java.util.regex.Pattern;
- /**
- * PostgreSQL模型
- *
- * @author JNPF开发平台组 YY
- * @version V3.2.0
- * @copyright 引迈信息技术有限公司
- * @date 2021/10/06
- */
- public class DbPostgre extends DbBase {
- public static String DEF_SCHEMA = "public";
- @Override
- protected void init() {
- setInstance(
- POSTGRE_SQL,
- DbType.POSTGRE_SQL,
- com.alibaba.druid.DbType.postgresql,
- "5432",
- "postgres",
- "postgresql",
- "org.postgresql.Driver",
- "jdbc:postgresql://{host}:{port}/{dbname}");
- }
- @Override
- public String getConnUrl(String prepareUrl, String host, Integer port, DbStruct struct) {
- prepareUrl = super.getConnUrl(prepareUrl, host, port, null);
- return prepareUrl.replace(DbConst.DB_NAME, struct.getPostGreDbName()).replace(DbConst.DB_SCHEMA, struct.getPostGreDbSchema());
- }
- @Override
- protected String getDynamicTableName(String tableName) {
- return TenantHolder.getDatasourceName().toLowerCase()+"."+tableName;
- }
- @Override
- public void setPartFieldModel(DbFieldModel model, ResultSet result) throws Exception {
- String nullSignStr = result.getString(DbAliasEnum.ALLOW_NULL.getAlias(this.getJnpfDbEncode()));
- model.setNullSign(DbAliasConst.ALLOW_NULL.getSign(nullSignStr.equals("YES") ? 1 : 0));
- super.setPartFieldModel(model, result);
- }
- private String getCheckSchema(String schema){
- if(StringUtil.isEmpty(schema)){
- // 默认public模式
- schema = DEF_SCHEMA;
- }
- return schema;
- }
- /**
- * 表存在大写与小写,导致大小写敏感,需要双引号
- * @param originTable 原始表名
- * @return 表名
- */
- public static String getTable(String originTable){
- if(Pattern.compile("[A-Z]").matcher(originTable).find()){
- return "\"" + originTable + "\"";
- }else {
- return originTable;
- }
- }
- }
|