public final class JDBCAgent
extends java.lang.Object
implements java.io.Closeable
Title: T1开发框架
Description: 基于JDBC的数据库操作工具类。
Copyright: Copyright (c) 2012
Company: seeyon.com
构造器和说明 |
---|
JDBCAgent()
已过时。
自7.1SP1版本,推荐使用以下方法:
|
JDBCAgent(boolean raw)
已过时。
自7.1SP1版本,推荐使用以下方法:
|
JDBCAgent(boolean raw,
boolean autoClose)
指定是否原生连接、是否自动关闭作为参数进行JDBCAgent的初始化
|
JDBCAgent(java.sql.Connection conn)
使用传入的数据库连接构造JDBCAgent,close方法将不会关闭该连接
|
JDBCAgent(java.lang.String dsName)
使用Spring管理的指定数据源的数据库连接构造JDBCAgent
|
限定符和类型 | 方法和说明 |
---|---|
void |
batch1Prepare(java.lang.String sql)
准备需要批量执行更新的Prepared SQL,使用例子如下:
JDBCAgent dba = new JDBCAgent();
dba.batch1Prepare("insert into xxx value(?
|
void |
batch2Add(java.util.List params)
添加要执行Prepared SQL的数据参数列表,使用例子如下:
JDBCAgent dba = new JDBCAgent();
dba.batch1Prepare("insert into xxx value(?
|
int |
batch3Execute()
执行批量的Prepared SQL,使用例子如下:
JDBCAgent dba = new JDBCAgent();
dba.batch1Prepare("insert into xxx value(?
|
void |
batchManual2Add(java.util.List params) |
static java.lang.String |
clobToString(java.sql.Clob clob) |
void |
close()
释放数据库资源
|
static java.lang.String |
concat(java.lang.String... fieldNames)
数据库字符串拼接:
如Mysql则使用: concat("field001", "'张三'") ==> concat(field001,'张三')
如Oracle则使用: concat("field001", "'张三'") ==> field001 || '张三'
如SQLServer SQL则使用: concat("field001", "'张三'") ==> field001 + '张三'
|
int |
count(java.lang.String namedSql,
java.util.Map<java.lang.String,java.lang.Object> nameParams)
JDBC count方法
|
int |
execute(java.lang.String sqlString)
执行SQL脚本
|
int |
execute(java.lang.String sqlString,
java.util.List params)
执行SQL脚本
|
int |
execute(java.lang.String sqlString,
java.lang.Object param)
执行SQL脚本
|
int |
executeBatch(java.util.List batchedSql)
批量执行SQL
|
void |
executeNamedSql(java.lang.String namedSql,
java.util.Map<java.lang.String,java.lang.Object> params) |
static java.lang.Object |
executePreparedStatement(java.lang.String preparedString,
org.springframework.jdbc.core.PreparedStatementCallback action)
使用默认的数据源执行预处理SQL的工具方法
|
static java.lang.Object |
executePreparedStatement(java.lang.String dsName,
java.lang.String preparedString,
org.springframework.jdbc.core.PreparedStatementCallback action)
执行预处理SQL的工具方法
|
static java.lang.Object |
executeProcedure(java.lang.String callString,
org.springframework.jdbc.core.CallableStatementCallback action)
使用默认的数据源执行存储过程的工具方法
|
static java.lang.Object |
executeProcedure(java.lang.String dsName,
java.lang.String callString,
org.springframework.jdbc.core.CallableStatementCallback action)
执行存储过程的工具方法
|
void |
executeSqlFile(java.lang.String sqlKey)
无需参数执行自定义SQL
|
void |
executeSqlFile(java.lang.String sqlKey,
java.util.List params)
执行自定义SQL,指定sqlKey的SQL脚本,SQL文件需要存放于cfgHome/sql目录下,且以数据库类型名称开头,
或者文件名以ALL开头作为各数据库通用sql配置文件
数据库类型名称如(注意区分大小写):DB2、MySQL、Oracle、PostgreSQL、SQLServer
|
void |
executeSqlFile(java.lang.String sqlKey,
java.util.Map<java.lang.String,java.lang.Object> params)
执行自定义SQL,指定sqlKey的SQL脚本,SQL文件需要存放于cfgHome/sql目录下,且以数据库类型名称开头,
或者文件名以ALL开头作为各数据库通用sql配置文件
数据库类型名称如(注意区分大小写):DB2、MySQL、Oracle、PostgreSQL、SQLServer
与executeSqlFile(String sqlKey, List params)类似,只是参数形式类似Hibernate的named query
|
FlipInfo |
findByPaging(java.lang.String sql,
FlipInfo fpi)
SQL翻页查询方法
|
FlipInfo |
findByPaging(java.lang.String sql,
java.util.List params,
FlipInfo fpi)
SQL翻页查询方法
|
FlipInfo |
findNameByPaging(java.lang.String namedSql,
java.util.Map<java.lang.String,java.lang.Object> nameParams,
FlipInfo fpi)
SQL翻页命名查询方法
|
java.util.List<java.util.Map<java.lang.String,java.lang.Object>> |
findNamedSql(java.lang.String namedSql)
SQL命名查询
|
java.util.List<java.util.Map<java.lang.String,java.lang.Object>> |
findNamedSql(java.lang.String namedSql,
java.util.Map<java.lang.String,java.lang.Object> queryParams)
SQL命名查询
|
java.lang.String |
getCatalog()
获取当前连接对应的数据库名称,database
|
static java.sql.Connection |
getConnection()
已过时。
不建议使用,这个取出来的Connection是close不掉的,受Spring管理
|
static java.lang.String |
getDatabaseType()
获取当前数据库类型的标示: Oracle、Microsoft SQL Server、MySQL、PostgreSQL、DM DBMS
如果是判断数据库类型,你可以使用: 是否为SQLServer数据库: isSQLServerRuntime()
是否为Oracle数据库: isOracleRuntime()
是否为MySQL数据库: isMySQLRuntime()
是否为PostgreSQL数据库: isPostgreSQLRuntime()
是否为达梦数据库: isDMRuntime()
|
static javax.sql.DataSource |
getDataSource()
获取在Spring中配置的默认数据源
|
static javax.sql.DataSource |
getDataSource(java.lang.String dsName)
获取在Spring中配置的指定数据源
|
static java.lang.String |
getDBType()
获取当前连接的数据库类型标识:oracle、microsoft sql server、mysql、postgresql、dm dbms
如果是判断数据库类型,你可以使用: 是否为SQLServer数据库: isSQLServerRuntime()
是否为Oracle数据库: isOracleRuntime()
是否为MySQL数据库: isMySQLRuntime()
是否为PostgreSQL数据库: isPostgreSQLRuntime()
是否为达梦数据库: isDMRuntime() |
java.lang.String |
getDBUserName()
数据库相关信息开始 *************************
|
static org.hibernate.dialect.Dialect |
getDialect()
获取当前Hibernate中的Dialect实例
|
java.sql.ResultSet |
getQueryResult()
获得查询结果集
|
static java.sql.Connection |
getRawConnection()
获取默认原始数据库连接(spring中配置的名称为dataSource的数据源连接)
|
static java.sql.Connection |
getRawConnection(java.lang.String dsName)
获取在Spring中配置的指定数据源名称的原始数据库连接
|
static java.lang.String |
getSqlInFile(java.lang.String sqlKey)
获取自定义SQL,指定sqlKey的SQL脚本,SQL配置文件需要存放于cfgHome/sql目录下,且以数据库类型名称开头,
或者文件名以ALL开头作为各数据库通用sql配置文件
数据库类型名称如(注意区分大小写):DB2、MySQL、Oracle、PostgreSQL、SQLServer
|
protected void |
init() |
static boolean |
isDMRuntime()
当前环境 是否是达梦数据库
|
static boolean |
isExistColumn(java.lang.String tableName,
java.lang.String columnName)
判断数据库表是否存在某列,不区分大小写
|
static boolean |
isExistColumnInner(java.lang.String tableName,
java.lang.String columnName) |
static boolean |
isExistTable(java.lang.String tableName)
判断数据库是否存在某个表,不区分大小写
|
static boolean |
isExistView(java.lang.String viewName)
判断数据库是否存在某个视图,不区分大小写
|
static boolean |
isGBasedbtRunTime()
当前环境 是否是南通大数据库
南通大数据库,基于IBM informix源代码、编译和测试
|
static boolean |
isKingBaseesRunTime()
当前环境 是否是人大金仓数据库
|
static boolean |
isMySQLRuntime()
当前环境 是否是Mysql数据库
|
static boolean |
isOracleRuntime()
当前环境 是否是Oracle数据库
|
static boolean |
isOscarRuntime()
当前环境 是否是神通数据库
|
static boolean |
isPostgreSQLRuntime()
当前环境 是否是PostgreSQL数据库
|
static boolean |
isSQLServerRuntime()
当前环境 是否是SQLServer数据库
|
static boolean |
isUXDBRunTime()
当前环境 是否是优炫数据库
|
static void |
loadSqlInFile()
特定数据库SQL文件执行开始 ******************
|
static void |
putTrackTableInfo(com.seeyon.ctp.monitor.perf.jdbcmonitor.proxyobj.JMSQLOperation aSQLOperation,
java.lang.String... aTableNames) |
static void |
release()
已过时。
|
java.util.List |
resultSetToList()
把查询结果集数据封装为Map的list,同时释放当前查询结果集的数据库游标。
|
java.util.List |
resultSetToList(boolean lowercaseKey)
把查询结果集数据封装为Map的list,同时释放当前查询结果集的数据库游标。
|
java.util.Map |
resultSetToMap()
把当前查询结果集合结果数据取出第一条封装到Map,如果无数据则返回空的Map实例(不是null)
|
java.util.Map |
resultSetToMap(java.sql.ResultSet rs)
把指定查询结果集合结果数据取出第一条封装到Map,如果无数据则返回空的Map实例(不是null)
|
static java.util.List<java.util.List> |
splitList(java.util.List entityList,
java.lang.Integer groupSize)
将集合按照指定组大小拆分成多组。
|
static java.lang.String |
toChar(java.lang.String fieldName)
数据库字段 TO_CHAR || casr as varchar
|
public JDBCAgent(java.sql.Connection conn)
@Deprecated public JDBCAgent()
@Deprecated public JDBCAgent(boolean raw)
raw
- 是否使用原始的数据库连接构造JDBCAgent
--------------------------------------------------------------方法手动设定是否自动关闭连接
如果autoClose为false,则必须在调用方进行关闭
--------------------------------------------------------------
public JDBCAgent(boolean raw, boolean autoClose)
public JDBCAgent(java.lang.String dsName)
dsName
- Spring数据源配置名称protected void init()
public int execute(java.lang.String sqlString) throws BusinessException, java.sql.SQLException
sqlString
- 要执行的SQL脚本resultSetToList()
获取list的长度BusinessException
java.sql.SQLException
query(String, List)
public int execute(java.lang.String sqlString, java.lang.Object param) throws BusinessException, java.sql.SQLException
sqlString
- 要执行的SQL脚本param
- SQL中的单个参数值。当SQL脚本中只有一个'?'出现时采用。resultSetToList()
获取list的长度BusinessException
java.sql.SQLException
query(String, List)
public int execute(java.lang.String sqlString, java.util.List params) throws BusinessException, java.sql.SQLException
sqlString
- 要执行的SQL脚本params
- 封装到List中的参数列表。添加参数的顺序需要和SQL脚本中的'?'出现的顺序一致。resultSetToList()
获取list的长度BusinessException
java.sql.SQLException
query(String, List)
public java.sql.ResultSet getQueryResult()
public int executeBatch(java.util.List batchedSql) throws BusinessException, java.sql.SQLException
BusinessException
java.sql.SQLException
public void batch1Prepare(java.lang.String sql) throws BusinessException, java.sql.SQLException
sql
- Prepared SQLBusinessException
java.sql.SQLException
public void batch2Add(java.util.List params) throws java.sql.SQLException
params
- 添加要执行Prepared SQL的数据参数列表BusinessException
java.sql.SQLException
public void batchManual2Add(java.util.List params) throws java.sql.SQLException
java.sql.SQLException
public int batch3Execute() throws java.sql.SQLException
BusinessException
java.sql.SQLException
public FlipInfo findByPaging(java.lang.String sql, FlipInfo fpi) throws BusinessException, java.sql.SQLException
sql
- 要进行翻页查询的SQL脚本fpi
- 翻页信息对象(size为-1的时候 取全部数据)BusinessException
java.sql.SQLException
public FlipInfo findByPaging(java.lang.String sql, java.util.List params, FlipInfo fpi) throws BusinessException, java.sql.SQLException
sql
- 要进行翻页查询的SQL脚本params
- 封装到List中的参数列表。添加参数的顺序需要和SQL脚本中的'?'出现的顺序一致。fpi
- 翻页信息对象(size为-1的时候 取全部数据)BusinessException
java.sql.SQLException
public java.util.List<java.util.Map<java.lang.String,java.lang.Object>> findNamedSql(java.lang.String namedSql) throws BusinessException
SQL命名查询
namedSql
- BusinessException
public java.util.List<java.util.Map<java.lang.String,java.lang.Object>> findNamedSql(java.lang.String namedSql, java.util.Map<java.lang.String,java.lang.Object> queryParams) throws BusinessException
SQL命名查询
namedSql
- queryParams
- BusinessException
public FlipInfo findNameByPaging(java.lang.String namedSql, java.util.Map<java.lang.String,java.lang.Object> nameParams, FlipInfo fpi) throws BusinessException, java.sql.SQLException
namedSql
- 要进行翻页查询的SQL脚本nameParams
- 查询参数fpi
- 翻页信息对象(size为-1的时候 取全部数据)BusinessException
java.sql.SQLException
public int count(java.lang.String namedSql, java.util.Map<java.lang.String,java.lang.Object> nameParams) throws BusinessException, java.sql.SQLException
namedSql
- nameParams
- java.sql.SQLException
BusinessException
public java.util.List resultSetToList() throws java.sql.SQLException
java.sql.SQLException
public java.util.List resultSetToList(boolean lowercaseKey) throws java.sql.SQLException
lowercaseKey
- 是否对列名进行lowercase转换java.sql.SQLException
public java.util.Map resultSetToMap() throws BusinessException, java.sql.SQLException
BusinessException
- 如果一条数据都没有,将抛出此异常java.sql.SQLException
public java.util.Map resultSetToMap(java.sql.ResultSet rs) throws BusinessException, java.sql.SQLException
rs
- 要封装到Map的结果集对象BusinessException
- 如果一条数据都没有,将抛出此异常java.sql.SQLException
public void close()
close
在接口中 java.io.Closeable
close
在接口中 java.lang.AutoCloseable
@Deprecated public static void release()
public java.lang.String getDBUserName() throws java.sql.SQLException
java.sql.SQLException
public java.lang.String getCatalog() throws java.sql.SQLException
java.sql.SQLException
public static org.hibernate.dialect.Dialect getDialect()
public static java.lang.String getDBType()
isSQLServerRuntime()
isOracleRuntime()
isMySQLRuntime()
isPostgreSQLRuntime()
isDMRuntime()
getDatabaseType()
public static java.lang.String getDatabaseType()
获取当前数据库类型的标示: Oracle、Microsoft SQL Server、MySQL、PostgreSQL、DM DBMS
如果是判断数据库类型,你可以使用:
是否为SQLServer数据库:isSQLServerRuntime()
是否为Oracle数据库:isOracleRuntime()
是否为MySQL数据库:isMySQLRuntime()
是否为PostgreSQL数据库:isPostgreSQLRuntime()
是否为达梦数据库:isDMRuntime()
getDBType()
public static boolean isSQLServerRuntime()
当前环境 是否是SQLServer数据库
public static boolean isOracleRuntime()
当前环境 是否是Oracle数据库
public static boolean isMySQLRuntime()
当前环境 是否是Mysql数据库
public static boolean isPostgreSQLRuntime()
当前环境 是否是PostgreSQL数据库
public static boolean isDMRuntime()
当前环境 是否是达梦数据库
public static boolean isOscarRuntime()
当前环境 是否是神通数据库
public static boolean isKingBaseesRunTime()
当前环境 是否是人大金仓数据库
public static boolean isUXDBRunTime()
当前环境 是否是优炫数据库
public static boolean isGBasedbtRunTime()
当前环境 是否是南通大数据库
南通大数据库,基于IBM informix源代码、编译和测试public static java.lang.Object executeProcedure(java.lang.String callString, org.springframework.jdbc.core.CallableStatementCallback action)
callString
- 存储过程调用语句action
- 存储过程调用回调函数实现public static java.lang.Object executeProcedure(java.lang.String dsName, java.lang.String callString, org.springframework.jdbc.core.CallableStatementCallback action)
dsName
- 执行存储过程的数据源名称callString
- 存储过程调用语句action
- 存储过程调用回调函数实现public static java.lang.Object executePreparedStatement(java.lang.String preparedString, org.springframework.jdbc.core.PreparedStatementCallback action)
preparedString
- 预处理SQL调用语句action
- 预处理SQL调用回调函数实现public static java.lang.Object executePreparedStatement(java.lang.String dsName, java.lang.String preparedString, org.springframework.jdbc.core.PreparedStatementCallback action)
dsName
- 执行预处理SQL的数据源名称preparedString
- 预处理SQL调用语句action
- 预处理SQL调用回调函数实现@Deprecated public static java.sql.Connection getConnection()
public static java.sql.Connection getRawConnection() throws java.sql.SQLException
java.sql.SQLException
public static java.sql.Connection getRawConnection(java.lang.String dsName) throws java.sql.SQLException
java.sql.SQLException
public static javax.sql.DataSource getDataSource()
public static javax.sql.DataSource getDataSource(java.lang.String dsName)
public static void loadSqlInFile()
public static java.lang.String getSqlInFile(java.lang.String sqlKey) throws BusinessException
sqlKey
- SQL配置keyBusinessException
public void executeSqlFile(java.lang.String sqlKey, java.util.List params) throws BusinessException, java.io.IOException, java.sql.SQLException
sqlKey
- SQL配置keyparams
- 自定义SQL执行所需参数ListBusinessException
java.io.IOException
java.sql.SQLException
public void executeSqlFile(java.lang.String sqlKey, java.util.Map<java.lang.String,java.lang.Object> params) throws BusinessException, java.io.IOException, java.sql.SQLException
sqlKey
- SQL配置keyparams
- 自定义SQL执行所需参数Map,类似Hibernate的named queryBusinessException
java.io.IOException
java.sql.SQLException
public void executeNamedSql(java.lang.String namedSql, java.util.Map<java.lang.String,java.lang.Object> params) throws BusinessException, java.io.IOException, java.sql.SQLException
BusinessException
java.io.IOException
java.sql.SQLException
public void executeSqlFile(java.lang.String sqlKey) throws BusinessException, java.io.IOException, java.sql.SQLException
sqlKey
- SQL配置keyBusinessException
java.io.IOException
java.sql.SQLException
public static java.lang.String clobToString(java.sql.Clob clob) throws java.sql.SQLException
java.sql.SQLException
public static java.util.List<java.util.List> splitList(java.util.List entityList, java.lang.Integer groupSize)
entityList
- 要分组的集合groupSize
- 每组集合的大小,可以为空。为空时使用默认值1000public static final void putTrackTableInfo(com.seeyon.ctp.monitor.perf.jdbcmonitor.proxyobj.JMSQLOperation aSQLOperation, java.lang.String... aTableNames)
public static java.lang.String toChar(java.lang.String fieldName)
数据库字段 TO_CHAR || casr as varchar
fieldName
- 字段名public static java.lang.String concat(java.lang.String... fieldNames)
fieldNames
- public static boolean isExistColumn(java.lang.String tableName, java.lang.String columnName)
tableName
- 数据库表名,不区分大小写columnName
- 数据库列名,不区分大小写public static boolean isExistColumnInner(java.lang.String tableName, java.lang.String columnName)
public static boolean isExistTable(java.lang.String tableName)
tableName
- 数据库表名,不区分大小写public static boolean isExistView(java.lang.String viewName)
viewName
- 数据库表名,不区分大小写