DbPostgre.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package jnpf.database.source.impl;
  2. import com.baomidou.mybatisplus.annotation.DbType;
  3. import jnpf.database.constant.DbAliasConst;
  4. import jnpf.database.constant.DbConst;
  5. import jnpf.database.enums.DbAliasEnum;
  6. import jnpf.database.model.dbfield.DbFieldModel;
  7. import jnpf.database.source.DbBase;
  8. import jnpf.database.sql.model.DbStruct;
  9. import jnpf.util.StringUtil;
  10. import jnpf.util.TenantHolder;
  11. import java.sql.ResultSet;
  12. import java.util.regex.Pattern;
  13. /**
  14. * PostgreSQL模型
  15. *
  16. * @author JNPF开发平台组 YY
  17. * @version V3.2.0
  18. * @copyright 引迈信息技术有限公司
  19. * @date 2021/10/06
  20. */
  21. public class DbPostgre extends DbBase {
  22. public static String DEF_SCHEMA = "public";
  23. @Override
  24. protected void init() {
  25. setInstance(
  26. POSTGRE_SQL,
  27. DbType.POSTGRE_SQL,
  28. com.alibaba.druid.DbType.postgresql,
  29. "5432",
  30. "postgres",
  31. "postgresql",
  32. "org.postgresql.Driver",
  33. "jdbc:postgresql://{host}:{port}/{dbname}");
  34. }
  35. @Override
  36. public String getConnUrl(String prepareUrl, String host, Integer port, DbStruct struct) {
  37. prepareUrl = super.getConnUrl(prepareUrl, host, port, null);
  38. return prepareUrl.replace(DbConst.DB_NAME, struct.getPostGreDbName()).replace(DbConst.DB_SCHEMA, struct.getPostGreDbSchema());
  39. }
  40. @Override
  41. protected String getDynamicTableName(String tableName) {
  42. return TenantHolder.getDatasourceName().toLowerCase()+"."+tableName;
  43. }
  44. @Override
  45. public void setPartFieldModel(DbFieldModel model, ResultSet result) throws Exception {
  46. String nullSignStr = result.getString(DbAliasEnum.ALLOW_NULL.getAlias(this.getJnpfDbEncode()));
  47. model.setNullSign(DbAliasConst.ALLOW_NULL.getSign(nullSignStr.equals("YES") ? 1 : 0));
  48. super.setPartFieldModel(model, result);
  49. }
  50. private String getCheckSchema(String schema){
  51. if(StringUtil.isEmpty(schema)){
  52. // 默认public模式
  53. schema = DEF_SCHEMA;
  54. }
  55. return schema;
  56. }
  57. /**
  58. * 表存在大写与小写,导致大小写敏感,需要双引号
  59. * @param originTable 原始表名
  60. * @return 表名
  61. */
  62. public static String getTable(String originTable){
  63. if(Pattern.compile("[A-Z]").matcher(originTable).find()){
  64. return "\"" + originTable + "\"";
  65. }else {
  66. return originTable;
  67. }
  68. }
  69. }