程序包 com.sh.javax

类 DataCenterBase

java.lang.Object
com.sh.javax.DataCenterBase
所有已实现的接口:
DataCenter
直接已知子类:
ESDataCenter, ExDataCenter, JDBCDataCenter, MainDataCenter, ReportDataCenter, SQueryDataCenter

public abstract class DataCenterBase extends Object implements DataCenter

Description: 数据库连接基类,处理一些公共的方法

Title:首亨软件 - CRM、TSS、ERP等信息化管理软件

  • 字段详细资料

    • POOL_CONN

      public static final String POOL_CONN
      另请参阅:
    • CONFIG_CONN

      public static final String CONFIG_CONN
      另请参阅:
    • LOCAL_CONN

      public static final String LOCAL_CONN
      另请参阅:
    • External_CONN

      public static final String External_CONN
      另请参阅:
    • UNDEFINE

      public static final int UNDEFINE
      另请参阅:
    • SH_POOL

      public static final int SH_POOL
      另请参阅:
    • STRUTS_POOL

      public static final int STRUTS_POOL
      另请参阅:
    • TOMCAT_POOL

      public static final int TOMCAT_POOL
      另请参阅:
    • WEBLOGIC_POOL

      public static final int WEBLOGIC_POOL
      另请参阅:
    • SH_BASIC_POOL

      public static final int SH_BASIC_POOL
      另请参阅:
    • SH_DRUID

      public static final int SH_DRUID
      另请参阅:
    • External

      public static final int External
      另请参阅:
    • con

      protected transient Connection con
    • batchMap

      protected Map<String,BatchUpdate> batchMap
    • log4j

      protected org.apache.logging.log4j.Logger log4j
    • executeLen

      protected long executeLen
    • queryTimeout

      protected int queryTimeout
    • writeLogFlag

      public static boolean writeLogFlag
    • executeAutoGeneratedKeys

      protected boolean executeAutoGeneratedKeys
    • autoGeneratedKey

      protected long autoGeneratedKey
    • eventRet

      protected DCEventRet eventRet
    • _lastException

      protected Exception _lastException
    • connectStartTime

      protected long connectStartTime
    • checkTimerInstance

      protected CheckDCConnectStatusTimer checkTimerInstance
    • checkTimer

      protected Timer checkTimer
    • isUpdateSilence

      protected boolean isUpdateSilence
    • lastExecuteTime

      protected long lastExecuteTime
    • isExcute

      protected boolean isExcute
    • _lastSql

      protected String _lastSql
    • _lastColType

      protected String[] _lastColType
    • _lastObj

      protected Object[] _lastObj
    • _lastRowCount

      protected int _lastRowCount
  • 构造器详细资料

    • DataCenterBase

      public DataCenterBase()
  • 方法详细资料

    • setParam

      public void setParam(String key, String value)
      指定者:
      setParam 在接口中 DataCenter
    • getParam

      public String getParam(String key, String defaultValue)
      指定者:
      getParam 在接口中 DataCenter
    • isExecute

      public boolean isExecute()
      是否正在执行
      指定者:
      isExecute 在接口中 DataCenter
      返回:
      true|false
    • isTooLongIdle

      public boolean isTooLongIdle(long idleTimeout)
      判断是否空闲太久
      指定者:
      isTooLongIdle 在接口中 DataCenter
      参数:
      idleTimeout - 空闲超时时长
      返回:
      boolean true|false
    • getIdleTime

      public long getIdleTime()
      获取空闲时间
      指定者:
      getIdleTime 在接口中 DataCenter
      返回:
      空闲时长,单位:毫秒
    • getLastExecuteSql

      public String getLastExecuteSql()
      获取最近一次执行的SQL语句
      指定者:
      getLastExecuteSql 在接口中 DataCenter
      返回:
      String
    • setExtProperty

      protected void setExtProperty(String extPro, org.apache.commons.dbcp2.BasicDataSource ds, com.alibaba.druid.pool.DruidDataSource dds)
    • checkRetrieveWatcher

      public DCWatcher checkRetrieveWatcher(String key)
      查看是否观察者
      参数:
      key - String
      返回:
      DCWatcher
    • watcherRetrieveFinish

      public void watcherRetrieveFinish(DCWatcher watcher, String key, Datastore ds)
      查询结束通知观察者
      参数:
      watcher - DCWatcher
      key - String
      ds - Datastore
    • getLastRowCount

      public int getLastRowCount()
      从接口复制的说明: DataCenter
      获取最后一次影响行数
      指定者:
      getLastRowCount 在接口中 DataCenter
      返回:
    • beginStatement

      public void beginStatement(Statement statement)
    • finishStatement

      public void finishStatement(Statement statement)
    • closeStatement

      public void closeStatement(Statement statement)
    • setCheckTimerSchedule

      public void setCheckTimerSchedule(long delay, String flag)
      设置定时检查的间隔时间参数
      指定者:
      setCheckTimerSchedule 在接口中 DataCenter
      参数:
      delay - 间隔时间,单独产:毫秒
      flag - 状态标识,用于业务判断
    • setCheckTimerSchedule

      public void setCheckTimerSchedule(long delay, boolean forceDisconnect)
      从接口复制的说明: DataCenter
      设置定时检查的间隔时间参数
      指定者:
      setCheckTimerSchedule 在接口中 DataCenter
      参数:
      delay - 间隔时间,单独产:毫秒
    • setCheckTimerSchedule

      public void setCheckTimerSchedule(long delay, String flag, boolean forceDisconnect)
      设置定时检查的间隔时间参数
      指定者:
      setCheckTimerSchedule 在接口中 DataCenter
      参数:
      delay - 间隔时间,单独产:毫秒
      flag - 状态标识,用于业务判断
      forceDisconnect - 到达时间后是否强制关闭,默认:false
    • toConnectBase

      protected void toConnectBase()
    • toDisconnectBase

      protected void toDisconnectBase()
    • getLastException

      public Exception getLastException()
      指定者:
      getLastException 在接口中 DataCenter
    • isSupportResultSetTypeScrollInsensitive

      protected boolean isSupportResultSetTypeScrollInsensitive()
      判断查询是否支持结果集 ResultSet.TYPE_SCROLL_INSENSITIVE 类型
      返回:
    • convertPwd

      protected static String convertPwd(String pwd)
      转换密码
      参数:
      pwd -
      返回:
    • setConnection

      public boolean setConnection(Connection conn)
      对于外部传入Connection连接的情况,必须设置
      指定者:
      setConnection 在接口中 DataCenter
      参数:
      conn - JDBC连接 注意:1)如果已经获取连接再次调用时,必须disconnect后再设置,否则无效 2)通过setConnection设置连接时,不需要调用connect方法
      返回:
      boolean
    • getConnection

      public Connection getConnection()
      获取连接
      指定者:
      getConnection 在接口中 DataCenter
      返回:
      Connection 连接对象
    • setAutoGetGeneratedKey

      public void setAutoGetGeneratedKey(boolean getGeneratedKeys)
      设置自获取序列号
      指定者:
      setAutoGetGeneratedKey 在接口中 DataCenter
      参数:
      getGeneratedKeys - boolean
    • setGeneratedKeys

      protected void setGeneratedKeys(ResultSet rs)
      设置自增长列
      参数:
      rs -
    • getAutoGeneratedKey

      public int getAutoGeneratedKey()
      获取自增长列 在执行查询前,需要做的操作有: setAutoGetGeneratedKey(true) //执行update setAutoGetGeneratedKey(false) int key = getAutoGeneratedKey() ;
      指定者:
      getAutoGeneratedKey 在接口中 DataCenter
      返回:
      自增长值
    • getAutoGeneratedKey2

      public long getAutoGeneratedKey2()
      获取自增长列 在执行查询前,需要做的操作有: setAutoGetGeneratedKey(true) //执行update setAutoGetGeneratedKey(false) long key = getAutoGeneratedKey2() ;
      指定者:
      getAutoGeneratedKey2 在接口中 DataCenter
      返回:
      自增长值
    • getAutoGeneratedKeyStr

      public String getAutoGeneratedKeyStr()
      从接口复制的说明: DataCenter
      获取自增长列并转化为String类型 在执行查询前,需要做的操作有: setAutoGetGeneratedKey(true) //执行带insert的且有自增长列的操作 setAutoGetGeneratedKey(false) String key == getAutoGeneratedKeyStr() ;
      指定者:
      getAutoGeneratedKeyStr 在接口中 DataCenter
      返回:
      自增长键值
    • hasConnected

      public boolean hasConnected()
      是否已经建立连接
      指定者:
      hasConnected 在接口中 DataCenter
      返回:
      boolean
    • setConnectState

      public void setConnectState(boolean isConnected)
      设置连接是否已经建立
      参数:
      isConnected - boolean
    • isValid

      public boolean isValid(int timeout)
      判断连接是否有效
      指定者:
      isValid 在接口中 DataCenter
      参数:
      timeout - 指定等待验证连接的秒数
      返回:
      true 有效 false 无效
      抛出:
      Exception - Exception
    • isValid

      public boolean isValid()
      判断连接是否有效,默认等待验证连接秒数:5s
      指定者:
      isValid 在接口中 DataCenter
      返回:
      true 有效 false 无效
    • checkValidAndReset

      public boolean checkValidAndReset()
      检查连接,如果连接无效了,则自动重新连接
      指定者:
      checkValidAndReset 在接口中 DataCenter
      返回:
      boolean
    • isClosed

      public boolean isClosed()
      判断连接是否关闭,只在连接调用close方法后才会返回true
      指定者:
      isClosed 在接口中 DataCenter
      返回:
      true 已关闭 false 未关闭
      抛出:
      Exception - Exception
    • setQueryTimeout

      public void setQueryTimeout(int queryTimeout)
      设置查询超时时间,0表示无限制
      指定者:
      setQueryTimeout 在接口中 DataCenter
      参数:
      queryTimeout - 超时时长 单位:秒
    • getQueryTimeout

      public int getQueryTimeout()
      获取查询超时时长
      指定者:
      getQueryTimeout 在接口中 DataCenter
      返回:
      超时时长,0表示无限制 单位:秒
    • setWriteEnable

      public void setWriteEnable(boolean enable)
      设置DC日志
      指定者:
      setWriteEnable 在接口中 DataCenter
      参数:
      enable - true|false
    • getWriteEnable

      public boolean getWriteEnable()
      是否记录DC日志标志
      指定者:
      getWriteEnable 在接口中 DataCenter
      返回:
      boolean
    • setInitClassInfo

      public void setInitClassInfo(String initClassInfo)
      设置初始化实例类 主要用于日志输出
      指定者:
      setInitClassInfo 在接口中 DataCenter
      参数:
      initClassInfo - 实例化类信息描述
    • getClassInfo

      public String getClassInfo()
      获取初始化实例类信息
      返回:
      String
    • getDcType

      public String getDcType()
      DC类型
      返回:
      连接类型
    • printLog

      public String printLog()
      指定者:
      printLog 在接口中 DataCenter
    • printLog

      public String printLog(org.apache.logging.log4j.Logger log4j)
      指定者:
      printLog 在接口中 DataCenter
    • printLog

      public String printLog(org.slf4j.Logger log)
      指定者:
      printLog 在接口中 DataCenter
    • printLog

      public String printLog(org.apache.logging.log4j.Logger log4j, String prefix)
      指定者:
      printLog 在接口中 DataCenter
    • _printLog

      protected void _printLog(String sql)
      打印日志
      参数:
      sql - 执行SQL
    • _printParamLog

      protected void _printParamLog(String[] colsType, Object[] obj)
      输出参数信息
      参数:
      obj -
    • writeExeDetail

      protected void writeExeDetail(String sql, boolean isCacheData, Datastore ds)
      记录SQL执行日志
      参数:
      sql - 执行SQL
    • writeExeDetail

      protected void writeExeDetail(String sql, long startTime, boolean isCacheData, Datastore ds)
      记录SQL执行日志
      参数:
      sql - 执行SQL
      startTime - 执行开始时间
    • writeExeDetail

      protected void writeExeDetail(String sql, long startTime, long endTime, boolean isCacheData, Datastore ds)
      记录SQL执行日志
      参数:
      sql - 执行SQL
      startTime - 执行开始时间
      endTime - 执行结束时间
    • writeDetail

      protected void writeDetail(String sql, long executeLen, boolean isCacheData, Datastore ds)
      记录SQL执行日志
      参数:
      sql - 执行SQL
      rangeTime - 执行时长
    • writeDetailByParam

      protected void writeDetailByParam(String sql, String[] colsType, Object[] obj, long executeLen, boolean isCacheData, Datastore ds)
      记录SQL执行日志
      参数:
      sql -
      rangeTime -
    • printGetConnectLog

      protected void printGetConnectLog(long startTime, String from)
      记录获取连接的时长
      参数:
      startTime -
    • convertRsToDs

      public Datastore convertRsToDs(ResultSet rs, int start, int end)
      将JDBC数据集转化称Datastore
      参数:
      rs - JDBC数据集
      start - 起始行,小于1时设置成1
      end - 结束行,小于1或者大于最大行数的时候设置成最大行
      返回:
      Datastore
    • convertRsToDs

      public Datastore convertRsToDs(ResultSet rs, String sql, String[] colsType, Object[] obj, long startTime)
      将整个数据集都转化称Datastore
      参数:
      rs - JDBC数据集
      sql - 执行SQL
      colsType - 参数类型
      obj - 参数值
      startTime - 开始时间
      返回:
      Datastore
    • getAllField

      protected void getAllField(Class clazz, List fieldList)
      查找所有属性,包括父对象
      参数:
      clazz -
      fieldList - 返回一个包含Field对象的结果集
    • convertSetPropType

      protected Object convertSetPropType(Object obj, SHColumnType colType, Class fieldType, String dateFormat, String numberFormat) throws Exception
      默认转换返回数据类型(setXXX方法的参数)
      参数:
      obj -
      colType -
      fieldType -
      dateFormat -
      返回:
      抛出:
      Exception
    • convertClobString

      protected String convertClobString(Clob clob) throws Exception
      转换CLOB对象
      参数:
      clob -
      返回:
      抛出:
      Exception
    • getObjectByColumnType

      protected Object getObjectByColumnType(SHColumnType columnType, String flag)
      获取七种数据类型的Class对象
      参数:
      columnType -
      返回:
    • isContainCascade

      protected boolean isContainCascade(CascadeType[] cts, CascadeType ct)
      判断是否包含级联操作
      参数:
      cts -
      ct -
      返回:
    • convertGetPropType

      protected Object convertGetPropType(Object obj, SHColumnType colType, String dateFormat) throws Exception
      默认类型转换
      参数:
      obj -
      colType -
      返回:
      抛出:
      Exception
    • isContainStr

      protected boolean isContainStr(String[] array, String str, boolean ignoreCase)
      判断某一个字符串是否存在于String数组之中
      参数:
      array - 字符数组
      str - 字符串
      ignoreCase - 是否忽略大小写
      返回:
      true存在、false不存在
    • setParams

      protected int setParams(PreparedStatement pstmt, String[] colsType, Object[] obj, int pos)
      设置PreparedStatement的参数
      参数:
      pstmt - PreparedStatement对象
      colsType - 列类型信息 (string:对应于数据库string型;timestamp:对应于数据库timestamp型)
      obj - 列数据
      pos - 前面已经设置的参数的个数(偏移量)
      返回:
      最后一次所设置的参数的位置(偏移量)
    • setProcParams

      protected String setProcParams(CallableStatement csmt, String[] colsType, Object[] obj, int[] paramType)
      设置CallableStatement的参数(存储过程)
      参数:
      pstmt - PreparedStatement对象
      colsType - 列类型信息 (string:对应于数据库string型;timestamp:对应于数据库timestamp型)
      obj - 列数据
      paramType - 参数输入、输出类型
      返回:
      以逗号分隔的返回游标序号
    • getErrorMsg

      public String getErrorMsg()
      指定者:
      getErrorMsg 在接口中 DataCenter
    • checkErrorMsg

      protected String checkErrorMsg(String message)
      处理错误信息的特殊字符(双引号),若为SQL异常,则返回ORACLE错误代码
      参数:
      message -
      返回:
    • loadConfig

      protected boolean loadConfig(String name) throws Exception
      从配置文件中获取默认的数据库连接参数
      参数:
      name - 文件名
      返回:
      是否加载成功
      抛出:
      Exception - 加载配置文件过程中出错
    • loadConfig

      @Deprecated protected static boolean loadConfig(String name, String sector) throws Exception
      已过时。
      从配置文件中获取数据库连接参数 该方法不再使用
      参数:
      name - 文件名
      sector - 数据库连接名称
      返回:
      是否加载成功
      抛出:
      Exception - 加载配置文件过程中出错
    • createSql

      protected String createSql(String sql, Class clazz, Object obj) throws Exception
      用属性值替换SQL中@userId@中的值
      参数:
      sql -
      返回:
      抛出:
      Exception
    • setParams

      protected int setParams(PreparedStatement pstmt, String[] colsType, Object[] obj)
      设置PreparedStatement的参数
      参数:
      pstmt - PreparedStatement对象
      colsType - 列类型信息 (string:对应于数据库string型;timestamp:对应于数据库timestamp型)
      obj - 列数据
      返回:
      最后一次所设置的参数的位置(偏移量)
    • beginBatchUpdateByParams

      protected String[] beginBatchUpdateByParams(Connection con, String sql, String[] colsType, int refreshCount)
      开始进行批量更新,目前只针对带参数类型
      参数:
      sql - 执行SQL
      colsType - SQL参数类型
      refreshCount - 批量队列到达该值时刷新
      返回:
      {true|false,操作关键字(后续操作会用到)|错误信息}
    • getExecutionLen

      public long getExecutionLen()
      最后一次执行时长
      指定者:
      getExecutionLen 在接口中 DataCenter
      返回:
      执行时长,单位:ms
    • getBatchUpdate

      public BatchUpdate getBatchUpdate(String key)
      指定者:
      getBatchUpdate 在接口中 DataCenter
    • addBatch

      public String[] addBatch(String key, Object[] obj)
      添加批量操作
      指定者:
      addBatch 在接口中 DataCenter
      参数:
      key - 操作序列号,通过beginBatchUpdateByParams获取
      obj - 参数值
      返回:
      {true|false,|错误信息}
    • refreshBatchUpdate

      public String[] refreshBatchUpdate(String key)
      刷新批量更新
      指定者:
      refreshBatchUpdate 在接口中 DataCenter
      参数:
      key - 操作序列号,通过beginBatchUpdateByParams获取
      返回:
      {true|false,当前操作号|错误信息}
    • endBatchUpdateByParams

      public String[] endBatchUpdateByParams(String key)
      结束批量更新操作
      指定者:
      endBatchUpdateByParams 在接口中 DataCenter
      参数:
      key - 操作序列号,通过beginBatchUpdateByParams获取
      返回:
      {true|false,更新记录条数|错误信息}
    • endBatchUpdateByParams

      public String[] endBatchUpdateByParams(String key, boolean commit)
      结束批量更新操作
      指定者:
      endBatchUpdateByParams 在接口中 DataCenter
      参数:
      key - 操作序列号,通过beginBatchUpdateByParams获取
      commit - 自动提交事务,true|false,默认:false
      返回:
      {true|false,更新记录条数|错误信息}
    • getObjectValue

      protected Object[] getObjectValue(Object obj, String operateType, boolean commit)
      构造执行更新所需要的的sql/colsType/objValue
      参数:
      obj - 传入对象
      operateType - add/mod(添加,更新)/replace
      返回:
      {String sql|String[] colsType|Object[] objValue}
      抛出:
      Exception
    • retrieveByParams2

      public Datastore retrieveByParams2(String sql, List<Object> objList)
      指定者:
      retrieveByParams2 在接口中 DataCenter
    • retrieveByParams2

      public Datastore retrieveByParams2(String sql, List<Object> objList, boolean isCache)
      指定者:
      retrieveByParams2 在接口中 DataCenter
    • retrieveByParams2

      public Datastore retrieveByParams2(String sql, List<String> colsTypeList, List<Object> objList)
      从接口复制的说明: DataCenter
      带参数查询数据集
      指定者:
      retrieveByParams2 在接口中 DataCenter
      参数:
      sql - 查询SQL
      colsTypeList - 参数类型数组
      objList - 参数值数组
      返回:
      查询数据集
    • retrieveByParams2

      public Datastore retrieveByParams2(String sql, List<String> colsTypeList, List<Object> objList, boolean cacheFlag)
      带参数查询数据集
      指定者:
      retrieveByParams2 在接口中 DataCenter
      参数:
      sql - 查询SQL
      colsTypeList - 参数类型数组
      objList - 参数值数组
      cacheFlag - 缓存标志
      返回:
      查询数据集
    • retrieveObjByParams2

      public Object retrieveObjByParams2(String sql, List<String> colsTypeList, List<Object> colsValueList, Class queryObj)
      查询对象
      指定者:
      retrieveObjByParams2 在接口中 DataCenter
      参数:
      sql - SQL语句
      queryObj - 带注释的PO对象
      colsTypeList - 参数类型
      colsValueList - 参数值
      返回:
      查询对象
      抛出:
      Exception - 查询异常
    • updateByParams2

      public String[] updateByParams2(String sql, List<String> colsTypeList, List<Object> objList, boolean commit)
      用参数的方式更新数据库
      指定者:
      updateByParams2 在接口中 DataCenter
      参数:
      sql - 更改数据库数据的语句
      colsTypeList - 参数类型
      objList - 参数值数组
      commit - 是否提交
      返回:
      string[0] "true"成功;"false"失败 string[1] 影响行数|出错信息
    • checkAndInitCache

      public void checkAndInitCache()
    • getDsCacheRedis

      public DSCacheRedis getDsCacheRedis()
      从接口复制的说明: DataCenter
      获取redis
      指定者:
      getDsCacheRedis 在接口中 DataCenter
      返回:
      DSCacheRedis
    • processKey

      public String processKey(String sql, String key, String[] colsType, Object[] obj)
    • getCacheDs

      public Datastore getCacheDs(String key)
    • putCacheDs

      public void putCacheDs(String key, Datastore ds)
    • closeCache

      public void closeCache()
    • close

      public void close()
    • getConnectStartTime

      public long getConnectStartTime()
    • isUpdateSilence

      public boolean isUpdateSilence()
    • setUpdateSilence

      public void setUpdateSilence(boolean isUpdateSilence)
      从接口复制的说明: DataCenter
      设置此连接是否为安静模式,即执行update时不会通知缓存等事件
      指定者:
      setUpdateSilence 在接口中 DataCenter
      参数:
      isUpdateSilence - 开头
    • replaceObject

      public String[] replaceObject(Object obj, boolean commit)
      指定者:
      replaceObject 在接口中 DataCenter
    • createUpdateBuilder

      public SqlUpdateBuilder createUpdateBuilder()
      创建添加、修改、删除的SQL生成工具对象为
      指定者:
      createUpdateBuilder 在接口中 DataCenter
      返回:
    • createQueryBuilder

      public SqlBuilder createQueryBuilder()
      创建查询的SQL生成工具对象为
      指定者:
      createQueryBuilder 在接口中 DataCenter
      返回:
    • createSelectBuilder

      public SqlSelectBuilder createSelectBuilder()
      创建查询的SQL生成工具对象为
      指定者:
      createSelectBuilder 在接口中 DataCenter
      返回:
    • createColsTypeByValue

      public String[] createColsTypeByValue(Object[] value)
      通过参数值自动生成参数类型
      指定者:
      createColsTypeByValue 在接口中 DataCenter
      参数:
      value -
      返回:
    • initExternalDataSource

      protected DataSource initExternalDataSource()
      初始化外部连接
      返回:
    • initExternalDataSource

      public static void initExternalDataSource(DataSource datasource, Class<?> clazz)
      初始化外部连接
      参数:
      datasource -
      clazz -
    • setJDBCParam

      public void setJDBCParam(String driver, String url, String user, String password)
      设置配置的连接信息
      参数:
      driver -
      url -
      user -
      password -