# 数据库
# 导入
通过如下方式导入数据库api
import db from 'svr-api/db';
//获取默认数据源对象
let ds = db.getDefaultDataSource();
# 方法
/**
* 数据库相关API
*/
/**
* 获取系统中所有数据源的名称。
*
* @returns 返回一个字符串数组
*/
export function getDataSources(): Array<string>;
/**
* 获取默认数据源,默认数据源用于存储系统的元数据、日志等内容
*
* @returns 返回默认数据源
*/
export function getDefaultDataSource(): Datasource;
/**
* 获取指定的数据源
*
* @param name 要获取的数据源的名称
* @param throwIfNotExist 如果不存在是否抛出异常,默认false
*
* @returns 不存在时返回null
*/
export function getDataSource(name: string, throwIfNotExist?: boolean): Datasource;
/**
* 获取一个序列号产生器。确保能产生集群唯一的序列号。
*
* @param namespace 序列号的命名空间。
*/
export function getNumberSequencer(namespace: string): NumberSequencer;
/**
* 获取redis客户端。
* @param serviceName 服务名,为空时获取默认的
* https://github.com/redisson/redisson
*/
export function getRedisClient(serviceName?: string): Redis;
/**
* 返回一个创建表或者修复表的接口;
* @param conn
* @param tablename
* @return
*/
export function getTableCreator(conn: Connection, tableName: string): CreateTable;
/**
* 获取修改表结构的接口
* @param conn
* @param tablename
* @return
*/
export function getTableAlter(conn: Connection, tableName: string): AlterTable;
# 对象
/**
* 数据源对象,通过此对象可以获取数据源相关属性、执行SQL。
*/
declare interface Datasource {
/**
* 返回数据源的名称
*/
getName(): string;
/**
* 返回Jdbc配置,可以参考JdbcSetting
*/
getJdbcConf(): DbConnectionInfo;
/**
* 返回默认的schema名称
*/
getDefaultSchema(): string;
/**
* 执行一个查询,并返回第一行数据的json(如果只是一个字段的话,直接返回字段的值)
*
* @param sql 要查询的SQL,应该是一个select语句,如 `select * from mytable where id=?` ,其中的问号会用`params`中对应的值替换
* @param [params] 可选,sql中需要的参数值
* @returns 如果是多个字段那么返回一个json对象,key是字段名,当数据不存在时返回`null`,只是一个字段时,返回的结果就是字段值
*/
selectFirst(sql: string, ...params: any): { [fieldName: string]: any };
/**
* 返回查询sql的数据行数
* @param sql 要查询的SQL,应该是一个select语句,如 `select * from mytable where id=?` ,其中的问号会用`params`中对应的值替换
* @param [params] 可选,sql中需要的参数值
* @returns 本次查询sql返回的结果行数
*/
getTotalCount(sql: string, ...params: any): number;
/**
* 执行查询sql并返回查询结果,一个json数组
*
* 注意:
* 1. 此查询有最大10w行的数据限制,超过10w会有异常提示。
* 2. 查询会把结果装入内存,调用者需要注意可能的内存溢出。
* 3. 如果真有读取超过10w行数据的情况,不适合读取到内存,可以使用{@link #openTableData()#executeQueryExtractor()}方法,并设置合适的fetchSize参数执行查询。
*
* @param sql 要查询的SQL,应该是一个select语句,如 `select * from mytable where id=?` ,其中的问号会用`params`中对应的值替换
* @param [params] 可选,sql中需要的参数值
* @returns 查询结果是数组的形式,每个元素是一个json,通过字段名获取字段的数据
*/
executeQuery(sql: string, ...params: any): Array<{ [fieldName: string]: any }>;
/**
* 执行查询sql并返回查询结果,一个json数组
*
* @param sql 要查询的SQL,应该是一个select语句,如 `select * from mytable where id=?` ,其中的问号会用`params`中对应的值替换
* @param [limit] 行数限制,一个数字长度为1或2的数组,如:
* 1. `[5]`表示查询前5行
* 2. `[3, 5]`表示从第4行开始返回最多5行
* 3. 如果不传递,那么最多查询5万行,如果传递了,那么以传递的为准
* @param [params] 可选,sql中需要的参数值
* @returns 查询结果是数组的形式,每个元素是一个json,通过字段名获取字段的数据
*/
executePageQuery(sql: string, limit: number | number[], ...params: any): Array<{ [fieldName: string]: any }>;
/**
* 执行查询sql并返回查询结果,一个二维数组
*
* 注意:
* 1. 此查询有最大10w行的数据限制,超过10w会有异常提示。
* 2. 查询会把结果装入内存,调用者需要注意可能的内存溢出。
* 3. 如果真有读取超过10w行数据的情况,不适合读取到内存,可以使用{@link #openTableData()#executeQueryExtractor()}方法,并设置合适的fetchSize参数执行查询。
*
* @param sql 要查询的SQL,应该是一个select语句,如 `select * from mytable where id=?` ,其中的问号会用`params`中对应的值替换
* @param [params] 可选,sql中需要的参数值
* @returns 查询结果是二维数组的形式
*/
executeQueryRows(sql: string, params?: Array<any>): Array<Array<any>>;
/**
* 执行查询sql并返回查询结果,一个二维数组
*
* @param sql 要查询的SQL,应该是一个select语句,如 `select * from mytable where id=?` ,其中的问号会用`params`中对应的值替换
* @param [params] 可选,sql中需要的参数值
* @param [limit] 行数限制,一个数字长度为1或2的数组,如:
* 1. `[5]`表示查询前5行
* 2. `[3, 5]`表示从第4行开始返回最多5行
* 3. 如果不传递,那么最多查询5万行,如果传递了,那么以传递的为准
* @returns 查询结果是二维数组的形式
*/
executePageQueryRows(sql: string, limit: number | number[], ...params: any): Array<Array<any>>;
/**
* 将数据库表或是查询结果导出为csv|excel|dbf|szdb文件,如:`exportData({table:"DIM_BBQ",file:"/succez/exp"})`
*/
exportData(args: {
/**要导出的表名称 */
tableName?: string,
/**表所在的schema */
schema?: string,
/**如果没有指定表,那么必须指定sql */
sql?: string,
/**sql中的参数 */
params?: Array<any>,
/**导出到哪个文件 */
file: File | string,
/**文件格式,为空时自动从文件名中分析 */
fileType?: FileType,
/**csv文件的分隔符,默认逗号 */
separator?: string,
/**csv文件的编码,默认utf-8 */
encoding?: string,
/**日期的导出格式,默认 yyyy-MM-dd */
dateFormat?: string,
/**时间戳的导出格式,默认 yyyy-MM-dd HH:mm:ss */
timestampFormat?: string,
/**第一行是否是字段名,默认true */
firstRowIsFieldNames?: boolean,
/**是否只导出字段名(即不包含结构信息),默认为false */
titleOnlyField?: boolean
}): void;
/**
* 将csv|excel|dbf|szdb数据文件导入数据库表中
*
* @returns 返回导入后的返回信息,比如导入多少行、耗时多少等
*/
importData(args: {
/**要导入数据的表名称 */
tableName?: string,
/**要导入的csv文件,必须 */
file: File | string | InputStream,
/**文件格式,为空时自动从文件名中分析 */
fileType?: FileType,
/**导入模式,默认clear,表示清空目标表后导入新的数据 */
importMode?: DataImportMode;
/**csv文件的分隔符,默认逗号 */
separator?: string,
/**csv文件的编码,默认utf-8 */
encoding?: string,
/**日期的导出格式,默认自动识别 */
dateFormat?: string,
/**时间戳的导出格式,默认自动识别 */
timestampFormat?: string,
/**第一行是否是字段名,默认将自动识别 */
firstRowIsFieldNames?: boolean,
}): {
/**返回导入的表名 */
importTable:string;
/**返回导入总行数 */
importRowCount:number;
/**返回忽略行 */
rejectsRows:Array<number>;
/**导入耗时,单位毫秒 */
totalTime:number;
/**返回执行的sql */
sql:string;
};
/**
* 执行一个update或ddl语句,返回影响的行数
*
* @param sql update或ddl语句
* @param [params] 可选,sql中需要的参数值
* @returns 返回影响的行数
*/
executeUpdate(sql: string, ...params: any): number;
/**
* 执行一个存储过程,如果存储过程有输出参数,则本函数会有返回值,返回值是一个Map
* @param procName 存储过程的名称,如 “myproc”
* @param params 存储过程的参数,支持2种格式:
* 1、Object数组,比如 `[123,"def"]`。这种适用于执行没有输出参数的存储过程。
* eg:插入一条数据到表中,调用`callproc(myproc, [123, "def"])`。内部将执行sql——`myproc(123, 'def')`
* 2. JSON数组,数组中的每个元素代表存储过程的一个参数,格式:`[{name:"参数名称", value:"参数值", type:"参数值的类型", isOutput: true}]`,
* 这种适用于执行有输出参数的存储过程。
* 说明:
* 1、name是参数名称,比如:"salary"
* 2、value是参数的值,比如:3000。如果不指定,则为null
* 3、type是参数的值的类型,目前支持的类型有"string"、"number"。如果不指定,则默认为"string"
* 4、isOutput是表示参数是否时输出参数。存储过程比较奇怪,调用的时候必须指出有哪些输出参数。如果不指定,则默认为false,表示不是输出参数(即为输入参数。
* eg:查询薪水3000以上的人员的数量,调用`callproc("calcSalary", [{name:"salary", value:3000}, {name:"count",type:"number",isOutput:true}] )`;
* 调用之后函数返回一个Map,比如:`{count:150}`
*/
callproc(
procName: string,
params?: JSONObject[] | Array<{ value: any, name?: string, type?: "number" | "string", isOutput?: boolean }>
): { [outputParam: string]: any };
/**创建一个物理表 注意当表已存在时会抛异常*/
createTable(args: {
/**要导入数据的表名称 */
tableName?: string,
/**表描述 */
desc?: string,
/**表所在的schema */
schema?: string,
/**主键信息 */
primaryKeys?: Array<string>,
/**字段列表 */
fields: Array<TableFieldMetadata>,
}): void;
/**
* 判断表或视图是否存在
* @param tableName 表名或视图名
* @param [schema] 可选,schema名称,不传则在默认schema下进行查找
*/
isTableExists(tableName: string, schema?: string): boolean;
/**
* 返回数据源的元数据信息
*/
getMetaData(): DatasourceMetaData;
/**
* 返回表或视图的元数据信息
* @param tableName 表名或视图名
* @param [schema] 可选,schema名称
*/
getTableMetaData(tableName: string, schema?: string): TableMetaData;
/**
* 设置创建的TableData的自动提交方式,默认true。
* @warn 该方法不推荐使用,使用会导致ds内部的update方法不能提交。
* @param autoCommit
*/
setAutoCommit(autoCommit: boolean): void;
/**
* 返回一个能方便的对一个表进行查询或数据更新的工具对象
*
* @param tableName 表名或视图名
* @param [schema] 可选,schema名称
* @param [conn] 可选,Connection对象
*/
openTableData(tableName: string, schema?: string, conn?: Connection): TableData;
/**
* 删除一张表
*
* @param tableName 表名或视图名
* @param [schema] 可选,schema名称
*/
dropTable(tableName: string, schema?: string): void;
/**
* 返回jdbc连接,连续多次调用此函数总是返回同一个连接对象,调用者需要负责关闭获取的连接对象。
*/
getConnection(): Connection;
/**
* 如果脚本里面要用字符串拼sql,那么用户输入的值要用formatConstValue转义之后再拼到sql里面去,防止出现sql注入漏洞
* 比如: "field like '"+ds.formatConstValue(value)+"'"
* "insert into testtb (field1,field2)value('aa','"+ds.formatConstValue(value)+"')
* @param str
*/
formatConstValue(str: string): string;
}
/**导入数据时的覆盖模式 */
declare const enum DataImportMode {
/** 新建一个表导入,目标表不存在则创建新表,存在则新建另一个表 */
NEWTABLE = "newTable",
/** 覆盖导入,如果目标表存在,会先执行删除 */
OVERWRITER = "overWriter",
/** 清空目标表,并导入新数据 */
CLEAR = "clear",
/** 追加导入,如果主键对应的数据存在则忽略 */
APPEND = "append",
/** 更新导入,不存在的追加,存在的覆盖 */
MERGE = "merge",
/** 直接导入,不做任何判断 */
INSERT = "insert"
}
/** 导入导出数据文件格式 */
declare const enum FileType {
CSV = 'csv',
SZDB = 'szdb',
DBF = 'dbf',
XLS = 'xls',
xlsx = 'xlsx'
}
/**
* 根据一个表的主键等信息,提供比较方便的查询和修改一个表的数据的工具对象。
* TableData有三种使用的场景:
* 1、第一种场景是autoCommit为true。这种场景最常用,这种场景下直接调用本方法的增删改查方法即可访问数据库,不需要调用commit、rollback
* 2、第二种场景是autoCommit为false。如果操作数据库需要关心事务,多个增删改操作必须在一个事务中执行,那么需要先调用`setAutoCommit(false)`,禁用自动提交。
* 然后在操作的最后调用commit(),在try-catch中调用rollback,下面是一个示例:
* 3、第三种场景是传入connection。如果在一个事务以外还要调用TableData以外的对象执行sql,为了实现一个事务,调用者要自己创建connection然后传给TableData。并且要自己commit、close连接
*
* 场景一的代码示例:
* ```
* import db from "svr-api/db";
* var ds = db.getDefaultDatasource();
* var tableData = ds.openTableData("xxb");
* tableData.executeUpdate(sql);
* ```
*
* 场景二的代码示例:
* ```
* import db from "svr-api/db";
* var ds = db.getDefaultDatasource();
* var tableData = ds.openTableData("xxb");
* //还有种方式是设置ds.setAutoCommit(false);再创建tableData。这种方式不推荐使用,ds.setAutoCommit的这个方法就不推荐使用。
* //原因:这样设置会导致ds内部的更新方法不能提交。
* try{
* tableData.setAutoCommit(false);
* tableData.executeUpdate(sql);
* tableData.executeUpdate(sql2);
* tableData.commit();
* }catch(e){
* tableData.rollback();
* throw e;
* }
* ```
*
* 场景三的代码示例:
* ```
* //注意:使用外部传入conn的方式,就不能调用tableData内部的commit、rollback方法。需要使用者自己调用conn的commit、rollback、close。
* import db from "svr-api/db";
* var ds = db.getDefaultDatasource();
* var conn = ds.getConnection();
* try{
* conn.setAutoCommit(false);
* var tableData = ds.openTableData("xxb", null, conn);
* tableData.executeUpdate(sql);
* tableData.executeUpdate(sql2);
*
* var tableData2 = ds.openTableData("xxb2", null, conn);
* tableData2.executeUpdate(sql3);
* tableData2.executeUpdate(sql4);
*
* conn.commit();
* }catch(e){
* conn.rollback();
* throw e;
* }finally{
* conn && conn.close();
* }
* ```
*/
declare interface TableData {
/**
* 执行一个查询,并返回第一行数据的json
*
* @param columnNames 要查询的字段,如:`"*"`, `"FIELD1"`, `["FIELD1", "FIELD2"]`
* @param [where] 查询条件,可以是一个字符串,如`"FIELD1=123 AND FIELD2='abc'"`,也可以是一个json,如`{"FIELD1":123, "FIELD2":"abc"}`
* @param [orderBy] 排序字段 传一个字符串 如`"FIELD1 DESC FIELD2 ASC"`
* @returns 当参数`columnNames`只是一个字符串字段时,返回的结果就是字段值,如果是多个字段那么返回一个json对象,key是字段名,
* 当数据不存在时返回`null`
*/
selectFirst(columnNames: string | Array<string>, where?: string | { [fieldName: string]: any }, orderBy?: string): { [fieldName: string]: any };
/**
* 执行一个查询并返回所有数据,一个json数组
*
* @param columnNames 要查询的字段,如:`"*"`, `"FIELD1"`, `["FIELD1", "FIELD2"]`
* @param [where] 查询条件,可以是一个字符串,如`"FIELD1=123 AND FIELD2='abc'"`,也可以是一个json,如`{"FIELD1":123, "FIELD2":"abc"}`
* @param [limit] 行数限制,一个数字长度为1或2的数组,如:
* 1. `5`表示查询前5行
* 2. `[3, 5]`表示从第4行开始返回最多5行
* 3. 如果不传递,那么最多查询5万行,如果传递了,那么以传递的为准
* @param [orderBy] 排序字段 传一个字符串 如`"FIELD1 DESC FIELD2 ASC"`
* @returns 返回一个json数组,如果没有满足条件的额数据,返回空数组
*/
select(columnNames: string | Array<string>, where?: string | { [fieldName: string]: any }, limit?: number | number[], orderBy?: string): Array<{ [fieldName: string]: any }>;
/**
* 执行一个查询,并返回第一行数据的数组
*
* @param columnNames 要查询的字段,如:`"*"`, `"FIELD1"`, `["FIELD1", "FIELD2"]`
* @param [where] 查询条件,可以是一个字符串,如`"FIELD1=123 AND FIELD2='abc'"`,也可以是一个json,如`{"FIELD1":123, "FIELD2":"abc"}`
* @param [orderBy] 排序字段 传一个字符串 如`"FIELD1 DESC FIELD2 ASC"`
* @returns 当参数`columnNames`只是一个字符串字段时,返回的结果就是字段值,如果是多个字段那么返回一个数组,
* 当数据不存在时返回`null`
*/
selectFirstRow(columnNames: string | Array<string>, where?: string | { [fieldName: string]: any }, orderBy?: string): Array<any>;
/**
* 执行一个查询并返回所有数据,一个二维数组
*
* @param columnNames 要查询的字段,如:`"*"`, `"FIELD1"`, `["FIELD1", "FIELD2"]`
* @param [where] 查询条件,可以是一个字符串,如`"FIELD1=123 AND FIELD2='abc'"`,也可以是一个json,如`{"FIELD1":123, "FIELD2":"abc"}`
* @param [limit] 行数限制,一个数字长度为1或2的数组,如:
* 1. `5`表示查询前5行
* 2. `[3, 5]`表示从第4行开始返回最多5行
* 3. 如果不传递,那么最多查询5万行,如果传递了,那么以传递的为准
* @param [orderBy] 排序字段 传一个字符串 如`"FIELD1 DESC FIELD2 ASC"`
* @returns 返回一个二维数组,如果没有满足条件的额数据,返回空数组
*/
selectRows(columnNames: string | Array<string>, where?: string | { [fieldName: string]: any }, limit?: number | number[], orderBy?: string): Array<Array<any>>;
/**
* 执行查询sql并返回查询结果,一个json数组
*
* @param sql 要查询的SQL,应该是一个select语句,如 `select * from mytable where id=?` ,其中的问号会用`params`中对应的值替换
* @param [params] 可选,sql中需要的参数值
* @returns 查询结果是数组的形式,每个元素是一个json,通过字段名获取字段的数据
*/
executeQuery(sql: string, params?: Array<any>): Array<{ [fieldName: string]: any }>;
/**
* 执行查询sql并通过一个回调函数resultSetExtractor自己处理结果集。
*
* 注意:
* 1. 调用此方法需要设置合适的fetchSize参数。
* 2. 如果需要读取所有数据,可以将maxRows设置为-1。
*
* 用于:
* 1. 导出数据到文件。
*
* @param sql 要查询的SQL,应该是一个select语句,如 `select * from mytable where id=?` ,其中的问号会用`params`中对应的值替换
* @param [resultSetExtractor] 必选,此回调函数有一个参数resultSet,是数据库结果集遍历器,不需要调用close。
* @param [params] 可选,sql中需要的参数值
* @returns 返回回调函数resultSetExtractor的返回值。
*/
executeQueryExtractor(sql: string, resultSetExtractor: (resultSet: JdbcResultSet) => any, params?: Array<any>): any;
/**
* 执行查询sql并返回查询结果,一个二维数组
*
* @param sql 要查询的SQL,应该是一个select语句,如 `select * from mytable where id=?` ,其中的问号会用`params`中对应的值替换
* @param [params] 可选,sql中需要的参数值
* @returns 查询结果是二维数组的形式
*/
executeQueryRows(sql: string, params?: Array<any>): Array<Array<any>>;
/**
* 插入数据,一行或多行
* 数据行可以是Map也可以是数组,大数据量的插入推荐用数组。
*
* @param data 要插入的数据,如:
* 1. `{"FIELD1":123, "FIELD2":"abc"}`表示插入一行
* 2. `[{"FIELD1":123, "FIELD2":"abc"}, {"FIELD1":456, "FIELD2":"def"}]` 表示插入多行
* 3. `[[123, "abc"], [456,"def"]]` 表示插入多行
* @param fields 当data参数中一行的数据是用数组而不是Map表示时,需要指定fields参数,用来指定字段顺序。
* @returns 返回插入的行数
*/
insert(data: { [fieldName: string]: any } | Array<{ [fieldName: string]: any }> | Array<Array<any>> | Array<any>, fields?:Array<string>): number;
/**
* 删除数据,必须明确匹配条件,当条件为空时抛出异常
*
* @param [where] 匹配条件,可以是一个字符串,如"FIELD1=123 AND FIELD2='abc'",也可以是一个json,如`{"FIELD1":123, "FIELD2":"abc"}`
* @returns 返回删除的行数
*/
del(where: string | { [fieldName: string]: any }): number;
/**
* 删除所有数据行
*/
deleteAll(): void;
/**
* 清空表数据,不可回滚
*/
truncate(): void;
/**
* 更新数据
*
* @param columnValues 要更新的字段及值,如`{"FIELD1":"FIELD1+123", "FIELD2":"substr(FIELD3,0,3)"}`
* @param [where] 匹配条件,可以是一个字符串,如"FIELD1=123 AND FIELD2='abc'",也可以是一个json,如`{"FIELD1":123, "FIELD2":"abc"}`
* @returns 返回删除的行数
*/
update(columnValues: { [fieldName: string]: any }, where?: string | { [fieldName: string]: any }): number;
/**
* 执行一个update或ddl语句,返回影响的行数
*
* @param sql update或ddl语句
* @param [params] 可选,sql中需要的参数值
* @returns 返回影响的行数
*/
executeUpdate(sql: string, params?: Array<any>): number;
/**
* 将表数据导出为csv文件,如:`exportData({file:"/succez/exp"})`
*/
exportData(args: {
/**导出到哪个文件 */
file: File | string,
/**csv文件的分隔符,默认逗号 */
separator?: string,
/**csv文件的编码,默认utf-8 */
encoding?: string,
/**日期的导出格式,默认 yyyy-MM-dd */
dateFormat?: string,
/**时间戳的导出格式,默认 yyyy-MM-dd HH:mm:ss */
timestampFormat?: string,
/**第一行是否是字段名,默认true */
firstRowIsFieldNames?: boolean,
}): void;
/**
* 将csv数据文件导入数据库表中
*
* @returns 返回导入后的返回信息,比如导入多少行、耗时多少等
*/
importData(args: {
/**要导入的csv文件,`file`和`data`,必须传递其一 */
file?: File | string,
/**要导入的数据,二维数组形式,`file`和`data`,必须传递其一 */
data?: any[][];
/**导入模式,默认clear,表示清空目标表后导入新的数据 */
importMode?: DataImportMode;
/**csv文件的分隔符,默认逗号 */
separator?: string,
/**csv文件的编码,默认utf-8 */
encoding?: string,
/**日期的导出格式,默认自动识别 */
dateFormat?: string,
/**时间戳的导出格式,默认自动识别 */
timestampFormat?: string,
/**第一行是否是字段名,默认将自动识别 */
firstRowIsFieldNames?: boolean,
}): {
/**返回导入的表名 */
importTable:string;
/**返回导入总行数 */
importRowCount:number;
/**返回忽略行 */
rejectsRows:Array<number>;
/**导入耗时,单位毫秒 */
totalTime:number;
/**返回执行的sql */
sql:string;
};
/**
* 设置执行的更新语句是否自动提交,默认true。
* 1.如果是外部传入的conn,那么此类不控制事务,autoCommit对传入conn不起作用,commit/rollback/close方法什么都不做。
* 2.自己获取的conn,当autoCommit=true,没有事务,每次执行sql的调用,用完就close,commit/rollback/close也什么都不做。
* 3.自己获取的conn,当autoCommit=false,内部开启事务。
* 可以多次执行sql,每次执行完不close连接。
* commit和出异常rollback的时候自动close连接。
* 增加close方法,如果con没有close,则关闭。
*
* 当autoCommit=false,推荐使用try...catch..finally...在finally块调用close方法,防止连接漏洞。
* @param autoCommit
*/
setAutoCommit(autoCommit: boolean): void;
/**
* 设置一次查询最多读取的数据行。
*
* 用于:
* 1. 当需要读取超过10w行数据时,比如导出数据到文件,调用此方法限制范围。
* 2. 如果需要读取全部数据,可以设置-1,表示不限制。
* 3. 并设置合适的fetchSize,特别是mysql,避免oom。
*
* 不设置时,默认最多读取10w行。
*
* @param maxRows
*/
setMaxRows(maxRows: number): void;
/**
* 设置查询时,每次从数据库获取一批数据的行数。
*
* 注意:
* 1. 这是jdbc参数,用于需要读取所有数据时,比如读取到文件。
* 2. mysql需要特别注意,读取大的结果集,必须设置此参数。
*
* 不设置,将使用驱动的默认值。
*
* @param fetchSize
*/
setFetchSize(fetchSize: number): void;
/**
* 提交所做的修改。只有当`Datasource`的`autoCommit`是`false`(默认是`false`)时,并且连接对象是内部生成的,才需要主动调用此函数提交数据。
* @warn 该方法仅用于内部conn且autoCommit=false的时候调用,请勿在外部传入conn是调用,外部传入conn时需要使用者自己管理。
*/
commit(): void;
/**
* 回滚所做的修改。
* @warn 同commit()方法一样,请不要在外部传入conn时调用。
*/
rollback(): void;
/**
* 增加的close方法。
* 当自己获取的连接,且设置了autoCommit=false,在finally块调用,防止连接漏洞。
*/
close(): void;
}
/**
* 数据库的元数据信息
*/
declare interface DatasourceMetaData {
/**
* 数据库类别
*/
getDbType(): DbType;
/**
* 主版本号
*/
getDatabaseMajorVersion(): number;
/**
* 副版本号
*/
getDatabaseMinorVersion(): number;
/**
* 数据库完整的版本号
*/
getDatabaseProductVersion(): string;
/**
* 完整的数据库名
*/
getDatabaseProductName(): string;
/**
* 获取jdbc驱动的版本号
*/
getDriverVersion(): string;
/**
* 获取jdbc驱动的主版本号
*/
getDriverMajorVersion(): number;
/**
* 返回schema列表
* @returns 没有任何结果时返回空数组(不是null)
*/
getSchemas(): string[];
/**
* 返回所有的表、视图或同义词。
*
* @returns 返回查询的结果,如果没有任何表或视图,那么返回空数组(不是null)
*/
getTables(args: {
/**
* 数据库的schema、对mysql等价于database、对oracle等价于user,不传递时,查询默认schema的表。*/
schema?: string,
/**
* 查询哪些类型的表,默认只查询表,不查询视图和同义词。
*/
types?: TableType[],
/**
* 强制重新查询数据库,不使用缓存。默认false,使用缓存。
*/
forceReload?: boolean,
}): TableMetaData[];
}
/**
* 表或视图的元数据信息
*/
declare interface TableMetaData {
/**
* 表名称
*/
getName(): string;
/**
* 返回表描述信息
*/
getComment(): string;
/**表类型,物理表或视图 */
getType(): TableType;
/**
* 返回带scheme的完整名字
*/
getFullTableName(): string;
/**
* 返回所属的schema
*/
getSchema(): string;
/**
* 返回全部字段列表
*/
getColumns(): Array<TableFieldMetadata>;
/**
* 返回索引列表
*/
getIndices(): Array<TableIndexMetadata>;
/**
* 返回表主键
*/
getPrimaryKey(): Array<string>;
/**
* 返回创建表的ddl
*/
getDDL(): string;
/**
* 返回数据表所占空间大小
*/
getStorageSize(): number;
/**
* 返回数据表数据行数
*/
getRowCount(): number;
}
/**表类型 */
declare const enum TableType {
/**物理表 */
table = "table",
/**视图 */
view = "view",
/**同义词 */
synonym = "synonym",
}
/**字段元数据信息 */
declare interface TableFieldMetadata {
/**
* 唯一id。
*/
name: string;
/**
* 字段描述。
*/
desc?: string;
/**
* 字段类型.
*/
dataType: FieldDataType;
/**
* 字段长度,字符型、整形、浮点型字段有此属性。
*/
length?: number;
/**
* 小数位数,浮点型字段有此属性。
*/
decimal?: number;
/**
* 是否允许为空
*/
nullable?: boolean;
/**
* 字段在表中的位置,即是第几个字段
*/
index?: number;
}
/**
* 数据表索引信息
*/
declare interface TableIndexMetadata {
/**
* 索引名。
*/
name: string;
/**
* 是否唯一索引。
*/
unique?: boolean;
/**
* 索引字段列表,列表中存放的是字段的物理字段名。
*/
fields: Array<string>;
/**
* 字段的排序方式,默认每个字段的排序方式为升序
*/
sorts?: { [name: string]: string };
}
/**
* jdbc数据库连接对象,用于执行更底层的api操作
* A JDBC Connection. For documentation of this class, see
* java.sql.Connection.
*/
declare interface Connection {
//clearWarnings(): void;
close(): void;
commit(): void;
// createArrayOf(typeName: string, elements: Object[]): JdbcArray;
// createBlob(): JdbcBlob;
// createClob(): JdbcClob;
// createNClob(): JdbcClob;
// createSQLXML(): JdbcSQLXML;
// createStatement(): JdbcStatement;
// createStatement(resultSetType: number, resultSetConcurrency: number): JdbcStatement;
// createStatement(resultSetType: number, resultSetConcurrency: number, resultSetHoldability: number): JdbcStatement;
// createStruct(typeName: string, attributes: Object[]): JdbcStruct;
// getAutoCommit(): boolean;
// getCatalog(): string;
// getHoldability(): number;
// getMetaData(): JdbcDatabaseMetaData;
// getTransactionIsolation(): number;
// getWarnings(): string[];
// isClosed(): boolean;
// isReadOnly(): boolean;
// isValid(timeout: number): boolean;
// nativeSQL(sql: string): string;
// prepareCall(sql: string): JdbcCallableStatement;
// prepareCall(sql: string, resultSetType: number, resultSetConcurrency: number): JdbcCallableStatement;
// prepareCall(sql: string, resultSetType: number, resultSetConcurrency: number, resultSetHoldability: number): JdbcCallableStatement;
prepareStatement(sql: string): JdbcPreparedStatement;
// prepareStatement(sql: string, autoGeneratedKeys: number): JdbcPreparedStatement;
// prepareStatement(sql: string, resultSetType: number, resultSetConcurrency: number): JdbcPreparedStatement;
// prepareStatement(sql: string, resultSetType: number, resultSetConcurrency: number, resultSetHoldability: number): JdbcPreparedStatement;
// prepareStatementByIndex(sql: string, indices: number[]): JdbcPreparedStatement;
// prepareStatementByName(sql: string, columnNames: string[]): JdbcPreparedStatement;
// releaseSavepoint(savepoint: JdbcSavepoint): void;
rollback(): void;
// rollback(savepoint: JdbcSavepoint): void;
setAutoCommit(autoCommit: boolean): void;
setCatalog(catalog: string): void;
// setHoldability(holdability: number): void;
// setReadOnly(readOnly: boolean): void;
// setSavepoint(): JdbcSavepoint;
// setSavepoint(name: string): JdbcSavepoint;
// setTransactionIsolation(level: number): void;
}
/**
* A JDBC PreparedStatement. For documentation of this class, see
* java.sql.PreparedStatement.
*/
declare interface JdbcPreparedStatement {
addBatch(): void;
addBatch(sql: string): void;
cancel(): void;
clearBatch(): void;
clearParameters(): void;
clearWarnings(): void;
close(): void;
execute(): boolean;
// execute(sql: string): boolean;
// execute(sql: string, autoGeneratedKeys: number, sql_: string, columnIndexes: number[]): boolean;
// execute(sql: string, autoGeneratedKeys: number, sql_: string, columnIndexes: number[]): boolean;
// execute(sql: string, columnNames: string[]): boolean;
executeBatch(): number[];
executeQuery(): JdbcResultSet;
// executeQuery(sql: string): JdbcResultSet;
executeUpdate(): number;
// executeUpdate(sql: string): number;
// executeUpdate(sql: string, autoGeneratedKeys: number, sql_: string, columnIndexes: number[]): number;
// executeUpdate(sql: string, autoGeneratedKeys: number, sql_: string, columnIndexes: number[]): number;
// executeUpdate(sql: string, columnNames: string[]): number;
// getConnection(): JdbcConnection;
// getFetchDirection(): number;
// getFetchSize(): number;
// getGeneratedKeys(): JdbcResultSet;
// getMaxFieldSize(): number;
// getMaxRows(): number;
getMetaData(): JdbcResultSetMetaData;
// getMoreResults(): boolean;
// getMoreResults(current: number): boolean;
// getParameterMetaData(): JdbcParameterMetaData;
// getQueryTimeout(): number;
getResultSet(): JdbcResultSet;
// getResultSetConcurrency(): number;
// getResultSetHoldability(): number;
// getResultSetType(): number;
getUpdateCount(): number;
// getWarnings(): string[];
// isClosed(): boolean;
// isPoolable(): boolean;
setArray(parameterIndex: number, x: JdbcArray): void;
setBigDecimal(parameterIndex: number, x: number): void;
setBlob(parameterIndex: number, x: JdbcBlob): void;
setBoolean(parameterIndex: number, x: boolean): void;
setByte(parameterIndex: number, x: number): void;
setBytes(parameterIndex: number, x: number[]): void;
setClob(parameterIndex: number, x: JdbcClob): void;
setCursorName(name: string): void;
setDate(parameterIndex: number, x: JdbcDate): void;
setDate(parameterIndex: number, x: JdbcDate, timeZone: string): void;
setDouble(parameterIndex: number, x: number): void;
setEscapeProcessing(enable: boolean): void;
setFetchDirection(direction: number): void;
setFetchSize(rows: number): void;
setFloat(parameterIndex: number, x: number): void;
setInt(parameterIndex: number, x: number): void;
setLong(parameterIndex: number, x: number): void;
setMaxFieldSize(max: number): void;
setMaxRows(max: number): void;
setNClob(parameterIndex: number, x: JdbcClob): void;
setNString(parameterIndex: number, x: string): void;
setNull(parameterIndex: number, sqlType: number): void;
setNull(parameterIndex: number, sqlType: number, typeName: string): void;
setObject(index: number, x: any): void;
setObject(parameterIndex: number, x: any, targetSqlType: number): void;
setObject(parameterIndex: number, x: any, targetSqlType: number, scaleOrLength: number): void;
setPoolable(poolable: boolean): void;
setQueryTimeout(seconds: number): void;
setRef(parameterIndex: number, x: JdbcRef): void;
// setRowId(parameterIndex: number, x: JdbcRowId): void;
// setSQLXML(parameterIndex: number, x: JdbcSQLXML): void;
setShort(parameterIndex: number, x: number): void;
setString(parameterIndex: number, x: string): void;
setTime(parameterIndex: number, x: JdbcTime): void;
setTime(parameterIndex: number, x: JdbcTime, timeZone: string): void;
setTimestamp(parameterIndex: number, x: JdbcTimestamp): void;
setTimestamp(parameterIndex: number, x: JdbcTimestamp, timeZone: string): void;
setURL(parameterIndex: number, x: string): void;
}
/**
* A JDBC ResultSet. For documentation of this class, see java.sql.ResultSet
* .
*/
declare interface JdbcResultSet {
absolute(row: number): boolean;
afterLast(): void;
beforeFirst(): void;
cancelRowUpdates(): void;
clearWarnings(): void;
close(): void;
// deleteRow(): void;
findColumn(columnLabel: string): number;
first(): boolean;
getArray(columnIndex: number): JdbcArray;
getArray(columnLabel: string): JdbcArray;
getBigDecimal(columnIndex: number): number;
getBigDecimal(columnLabel: string): number;
getBlob(columnIndex: number): JdbcBlob;
getBlob(columnLabel: string): JdbcBlob;
getBoolean(columnIndex: number): boolean;
getBoolean(columnLabel: string): boolean;
getByte(columnIndex: number): number;
getByte(columnLabel: string): number;
getBytes(columnIndex: number): number[];
getBytes(columnLabel: string): number[];
getClob(columnIndex: number): JdbcClob;
getClob(columnLabel: string): JdbcClob;
getConcurrency(): number;
getCursorName(): string;
getDate(columnIndex: number): JdbcDate;
getDate(columnIndex: number, timeZone: string): JdbcDate;
getDate(columnLabel: string): JdbcDate;
getDate(columnLabel: string, timeZone: string): JdbcDate;
getDouble(columnIndex: number): number;
getDouble(columnLabel: string): number;
getFetchDirection(): number;
getFetchSize(): number;
getFloat(columnIndex: number): number;
getFloat(columnLabel: string): number;
getHoldability(): number;
getInt(columnIndex: number): number;
getInt(columnLabel: string): number;
getLong(columnIndex: number): number;
getLong(columnLabel: string): number;
getMetaData(): JdbcResultSetMetaData;
getNClob(columnIndex: number): JdbcClob;
getNClob(columnLabel: string): JdbcClob;
getNString(columnIndex: number): string;
getNString(columnLabel: string): string;
getObject(columnIndex: number): any;
getObject(columnLabel: string): any;
getRef(columnIndex: number): JdbcRef;
getRef(columnLabel: string): JdbcRef;
getRow(): number;
// getRowId(columnIndex: number): JdbcRowId;
// getRowId(columnLabel: string): JdbcRowId;
// getSQLXML(columnIndex: number): JdbcSQLXML;
// getSQLXML(columnLabel: string): JdbcSQLXML;
getShort(columnIndex: number): number;
getShort(columnLabel: string): number;
// getStatement(): JdbcStatement;
getString(columnIndex: number): string;
getString(columnLabel: string): string;
getTime(columnIndex: number): JdbcTime;
getTime(columnIndex: number, timeZone: string): JdbcTime;
getTime(columnLabel: string): JdbcTime;
getTime(columnLabel: string, timeZone: string): JdbcTime;
getTimestamp(columnIndex: number): JdbcTimestamp;
getTimestamp(columnIndex: number, timeZone: string): JdbcTimestamp;
getTimestamp(columnLabel: string): JdbcTimestamp;
getTimestamp(columnLabel: string, timeZone: string): JdbcTimestamp;
getType(): number;
getURL(columnIndex: number): string;
getURL(columnLabel: string): string;
getWarnings(): string[];
insertRow(): void;
isAfterLast(): boolean;
isBeforeFirst(): boolean;
isClosed(): boolean;
isFirst(): boolean;
isLast(): boolean;
last(): boolean;
moveToCurrentRow(): void;
moveToInsertRow(): void;
next(): boolean;
previous(): boolean;
refreshRow(): void;
relative(rows: number): boolean;
rowDeleted(): boolean;
rowInserted(): boolean;
rowUpdated(): boolean;
setFetchDirection(direction: number): void;
setFetchSize(rows: number): void;
// updateArray(columnIndex: number, x: JdbcArray): void;
// updateArray(columnLabel: string, x: JdbcArray): void;
// updateBigDecimal(columnIndex: number, x: number): void;
// updateBigDecimal(columnLabel: string, x: number): void;
// updateBlob(columnIndex: number, x: JdbcBlob): void;
// updateBlob(columnLabel: string, x: JdbcBlob): void;
// updateBoolean(columnIndex: number, x: boolean): void;
// updateBoolean(columnLabel: string, x: boolean): void;
// updateByte(columnIndex: number, x: number): void;
// updateByte(columnLabel: string, x: number): void;
// updateBytes(columnIndex: number, x: number[]): void;
// updateBytes(columnLabel: string, x: number[]): void;
// updateClob(columnIndex: number, x: JdbcClob): void;
// updateClob(columnLabel: string, x: JdbcClob): void;
// updateDate(columnIndex: number, x: JdbcDate): void;
// updateDate(columnLabel: string, x: JdbcDate): void;
// updateDouble(columnIndex: number, x: Number): void;
// updateDouble(columnLabel: string, x: Number): void;
// updateFloat(columnIndex: number, x: Number): void;
// updateFloat(columnLabel: string, x: Number): void;
// updateInt(columnIndex: number, x: number): void;
// updateInt(columnLabel: string, x: number): void;
// updateLong(columnIndex: number, x: number): void;
// updateLong(columnLabel: string, x: number): void;
// updateNClob(columnIndex: number, x: JdbcClob): void;
// updateNClob(columnLabel: string, x: JdbcClob): void;
// updateNString(columnIndex: number, x: string): void;
// updateNString(columnLabel: string, x: string): void;
// updateNull(columnIndex: number): void;
// updateNull(columnLabel: string): void;
// updateObject(columnIndex: number, x: Object): void;
// updateObject(columnIndex: number, x: Object, scaleOrLength: number): void;
// updateObject(columnLabel: string, x: Object): void;
// updateObject(columnLabel: string, x: Object, scaleOrLength: number): void;
// updateRef(columnIndex: number, x: JdbcRef): void;
// updateRef(columnLabel: string, x: JdbcRef): void;
// updateRow(): void;
// updateRowId(columnIndex: number, x: JdbcRowId): void;
// updateRowId(columnLabel: string, x: JdbcRowId): void;
// updateSQLXML(columnIndex: number, x: JdbcSQLXML): void;
// updateSQLXML(columnLabel: string, x: JdbcSQLXML): void;
// updateShort(columnIndex: number, x: number): void;
// updateShort(columnLabel: string, x: number): void;
// updateString(columnIndex: number, x: string): void;
// updateString(columnLabel: string, x: string): void;
// updateTime(columnIndex: number, x: JdbcTime): void;
// updateTime(columnLabel: string, x: JdbcTime): void;
// updateTimestamp(columnIndex: number, x: JdbcTimestamp): void;
// updateTimestamp(columnLabel: string, x: JdbcTimestamp): void;
wasNull(): boolean;
}
/**
* A JDBC ResultSetMetaData. For documentation of this class, see
* java.sql.ResultSetMetaData.
*/
declare interface JdbcResultSetMetaData {
getCatalogName(column: number): string;
getColumnClassName(column: number): string;
getColumnCount(): number;
getColumnDisplaySize(column: number): number;
getColumnLabel(column: number): string;
getColumnName(column: number): string;
getColumnType(column: number): number;
getColumnTypeName(column: number): string;
getPrecision(column: number): number;
getScale(column: number): number;
getSchemaName(column: number): string;
getTableName(column: number): string;
isAutoIncrement(column: number): boolean;
isCaseSensitive(column: number): boolean;
isCurrency(column: number): boolean;
isDefinitelyWritable(column: number): boolean;
isNullable(column: number): number;
isReadOnly(column: number): boolean;
isSearchable(column: number): boolean;
isSigned(column: number): boolean;
isWritable(column: number): boolean;
}
/**
* A JDBC Array. For documentation of this class, see java.sql.Array
* .
*/
declare interface JdbcArray {
free(): void;
getArray(): any;
getArray(index: number, count: number): any;
getBaseType(): number;
getBaseTypeName(): string;
getResultSet(): JdbcResultSet;
getResultSet(index: number, count: number): JdbcResultSet;
}
/**
* A JDBC Blob. For documentation of this class, see java.sql.Blob
* .
*/
declare interface JdbcBlob {
free(): void;
getAppsScriptBlob(): Blob;
getAs(contentType: string): Blob;
getBytes(position: number, length: number): number[];
length(): number;
position(pattern: number[], start: number): number;
position(pattern: JdbcBlob, start: number): number;
// setBytes(position: number, blobSource: Base.BlobSource): number;
// setBytes(position: number, blobSource: Base.BlobSource, offset: number, length: number): number;
setBytes(position: number, bytes: number[]): number;
setBytes(position: number, bytes: number[], offset: number, length: number): number;
truncate(length: number): void;
}
/**
* A data interchange object for Apps Script services.
*/
declare interface Blob {
copyBlob(): Blob;
getAs(contentType: string): Blob;
getBytes(): number[];
getContentType(): string;
getDataAsString(): string;
getDataAsString(charset: string): string;
getName(): string;
isGoogleType(): boolean;
setBytes(data: number[]): Blob;
setContentType(contentType: string): Blob;
setContentTypeFromExtension(): Blob;
setDataFromString(string: string): Blob;
setDataFromString(string: string, charset: string): Blob;
setName(name: string): Blob;
getAllBlobs(): Blob[];
}
/**
* A JDBC Clob. For documentation of this class, see java.sql.Clob
* .
*/
declare interface JdbcClob {
free(): void;
getAppsScriptBlob(): Blob;
getAs(contentType: string): Blob;
getSubString(position: number, length: number): string;
length(): number;
position(search: JdbcClob, start: number): number;
position(search: string, start: number): number;
// setString(position: number, blobSource: Base.BlobSource): number;
// setString(position: number, blobSource: Base.BlobSource, offset: number, len: number): number;
setString(position: number, value: string): number;
setString(position: number, value: string, offset: number, len: number): number;
truncate(length: number): void;
}
/**
* A JDBC Date. For documentation of this class, see java.sql.Date
* .
*/
declare interface JdbcDate {
after(when: JdbcDate): boolean;
before(when: JdbcDate): boolean;
getDate(): number;
getMonth(): number;
getTime(): number;
getYear(): number;
setDate(date: number): void;
setMonth(month: number): void;
setTime(milliseconds: number): void;
setYear(year: number): void;
}
/**
* A JDBC Ref. For documentation of this class, see java.sql.Ref.
*/
declare interface JdbcRef {
getBaseTypeName(): string;
getObject(): any;
setObject(object: any): void;
}
/**
* A JDBC Time. For documentation of this class, see java.sql.Time
* .
*/
declare interface JdbcTime {
after(when: JdbcTime): boolean;
before(when: JdbcTime): boolean;
getHours(): number;
getMinutes(): number;
getSeconds(): number;
getTime(): number;
setHours(hours: number): void;
setMinutes(minutes: number): void;
setSeconds(seconds: number): void;
setTime(milliseconds: number): void;
}
/**
* A JDBC Timestamp. For documentation of this class, see java.sql.Timestamp
* .
*/
declare interface JdbcTimestamp {
after(when: JdbcTimestamp): boolean;
before(when: JdbcTimestamp): boolean;
getDate(): number;
getHours(): number;
getMinutes(): number;
getMonth(): number;
getNanos(): number;
getSeconds(): number;
getTime(): number;
getYear(): number;
setDate(date: number): void;
setHours(hours: number): void;
setMinutes(minutes: number): void;
setMonth(month: number): void;
setNanos(nanoseconds: number): void;
setSeconds(seconds: number): void;
setTime(milliseconds: number): void;
setYear(year: number): void;
}
/**
* 一个唯一序号生成器。
*
* 生成的序号是递增的,但不确保连续,产生过的序号就不再会重复产生,确保集群上唯一。
*/
declare interface NumberSequencer {
/**
* 产生一个新的序号。
*
* @return 返回一个新的序号
*/
next(): number;
/**
* 批量产生一批序列号,性能比多次调用{@link #next()}更好。
*
* @param count 产生的数量。
* @return 返回一批新的序号
*/
batchNext(count: number): number[];
}
/**
* Redis对象
*/
declare interface Redis {
/**
* 返回Jedis
*/
getJedis():any;
/**
* 往redis数据库中写入一条数据
* @param key
* @param value
*/
set(key: string, value: string): string;
/**
* 从redis中读取一条数据
* @param key
*/
get(key: string): string;
/**
* 为hash表中的字段赋值,将哈希表 key 中的域 field 的值设为 value
* @param key
* @param field
* @param value
*/
hset(key: string, field: string, value: string): number;
/**
* 返回哈希表key中给定域field的值
* @param key
*/
hget(key: string, field: string): string;
/**
* 同时将多个 field-value (域-值)对设置到哈希表 key 中
* @param key
* @param hash
*/
hmset(key: string, hash: { [fieldName: string]: any }): string;
/**
* 返回哈希表 key 中,一个或多个给定域的值
* @param key
* @param field
*/
hmget(key: string, ...field: any): Array<string>;
/**
* 判断key对应字段的是否存在
* @param key
*/
exists(key: string): boolean;
/**
* 删除键为key的数据项
* @param key 要删除的key
* @returns 返回受影响的行数
*/
del(key: string): number;
/**
* 设置key的过期时间
* @param key
* @param time
* @returns 设置成功返回1,key不存在或者不能设置时,返回0
*/
expire(key: string, time: number): number;
/**
* 移除键为key的生存时间限制
* @param key
* @returns 移除成功的时候返回1,移除失败(未设置生存时间)返回0
*/
persist(key: string): number;
/**
* 返回key对应value的数据类型
* @param key
*/
type(key: string): string;
/**
* 在key对应的value后面扩展字符appendStr
* @param key
* @param appendStr
* @returns 追加字符串后的总长度
*/
append(key: string, appendStr: string): number;
/**
* 将key对应的value自加1
* @param key
* @returns 返回自增之后的value
*/
incr(key: string): number;
/**
* 将key对应的value自加length
* @param key
* @param length
* @returns 返回自增之后的value
*/
incrBy(key: string, length: number): number;
/**
* 让key对应的Map中的field字段的值自增length长度
* @param key
* @param field
* @param length
*/
hincrBy(key: string, field: string, length: number): any;
/**
* 将key对应的value自加1
* @param key
* @returns 返回自增之后的value
*/
decr(key: string): number;
/**
* 将key对应的value自加length
* @param key
* @param length
* @returns 返回自增之后的value
*/
decrBy(key: string, length: number): number;
/**
* 表示往key对应的list左插入一个元素
* @param key
* @param params
* @returns
*/
lpush(key: string, Vn: string): number;
/**
* 往key对应的list右插入一个元素
* @param key
* @param Vn
* @returns
*/
rpush(key: string, Vn: string): number;
/**
* 执行一段lua脚本
* @param luaScript lua脚本字符串
* @param keys 脚本中的键参数
* @param values 键参数对应的值
*
* @example
* redisson.eval(`return redis.call('get', 'AAA:testSet')`)
*/
eval(luaScript: string, keys?: Array<any>, ...values: any): any;
/**
* 获取list对应区间[start,end]对应的元素
* @param key
* @param start
* @param stop
* @returns
*/
lrange(key: string, start: number, end: number): Array<any>;
/**
* 返回key对应的value中下标为index的值
* @param key
* @param index
*/
lindex(key: string, index: number): string;
/**
* 返回key对应的集合长度
* @param key
*/
llen(key: string): number;
/**
* 设置key对应的value中下标为index的值
* @param key
* @param index
* @param value
*/
lset(key: string, index: number, value: any): void
}
/**导入数据时的覆盖模式 */
declare const enum AlterTableMode {
/**
* alter优先模式<br>
* 此模式将通过执行一系列alter语句实现目的;<br>
* 此模式适用于源表数据量小的时候。<br>
* 默认使用此模式;<br>
* 注意此模式是不可逆的,一旦执行,不能取消。
*/
MODE_ALTER = 0,
/**
* 临时表模式<br>
* 此模式将通过创建临时表,来实现目的;<br>
* 原理:使用新字段属性创建临时表,copy数据到临时表,源表更名,临时表更名为原表名,删除更名后的源表;<br>
* 此模式适用于源表有大量数据的时候。
*/
MODE_TEMPTABLE = 1
}
declare interface AlterTable {
/**
* 修改字段名
* @param columnName
* @param newcolumnName
*/
modifyColumnName(columnName: string, newcolumnName: string): void;
/**
* 修改字段长度,对字符类型字段有效;
* @param columnName
* @param len
*/
modifyColumnLength(columnName: string, len: number): void;
/**
* 修改数值类型精度
* @param columnName
* @param len 总长度
* @param scale 小数位数
*/
modifyColumnPrecision(columnName: string, len: number, scale: number): void;
/**
* 更改字段类型、长度、精度
* @param columnName
* @param coltype {@link ColumnTypes}
* @param len
* @param scale
*/
modifyColumn(columnName: string, coltype: string, len: number, scale: number): void;
/**
* 更改字段值是否能为空;
* @param columnName
* @param nullable
*/
modifyColumnNullable(columnName: string, nullable: boolean): void;
/**
* 更改字段的唯一属性
* @param columnName
* @param unique
*/
modifyColumnUnique(columnName: string, unique: boolean): void;
/**
* 更改字段默认值;
* @param columnName
* @param defvalue
*/
modifyColumnDefaultValue(columnName: string, defvalue: string): void;
/**
* 修改字段描述
* @param columnName
* @param comment
*/
modifyColumnComment(columnName: string, comment: string): void;
/**
* 修改表的描述
* @param comments
*/
modifyTableComment(comment: string): void;
/**
* 修改字段的自增长属性
* @param columnName
* @param autoInc
*/
modifyAutoInc(columnName: string, autoInc: boolean): void;
/**
* 增加一个字段;
* @param columnName
* @param coltype {@link com.succez.commons.jdbc.ColumnTypes}
* @param len
* @param scale
* @param defvalue
* @param nullable
* @param unique
*/
addColumn(columnName: string, coltype: string, len: number, scale: number, defvalue: string, nullable: boolean, comment: string): void;
/**
* 增加一个字段,带是否唯一属性
* @param columnName
* @param coltype
* @param len
* @param scale
* @param defvalue
* @param nullable
* @param unique 唯一属性
* @param comment
*/
addColumn(columnName: string, coltype: string, len: number, scale: number, defvalue: string, nullable: boolean, unique: boolean, comment: string,
autoInc: boolean): void;
/**
* 删除字段
* @param columnName
*/
dropColumn(columnName: string): void;
/**
* 设置新的主键
* @param keys 如果keys==null,则表示删除现有主键
*/
setPrimaryKey(keys: string[]): void;
/**
* 删除现有主键
*/
dropPrimaryKey(): void;
/**
* 删除索引
* @param indexName
*/
dropIndex(indexName: string): void;
/**
* 增加索引
* @param columns
* @param unique
*/
addIndex(columns: string[], unique: boolean): void;
/**
* 定义索引,自定索引名。
* @param indexName
* @param fields
* @param unique
*/
addIndex(indexName: string, fields: string[], unique: boolean): void;
/**
* 定义索引,自定索引名。
* @param indexName
* @param fields
* @param unique
*/
addIndex(indexName: string, fields: string[], unique: boolean, sorts: { [k: string]: string }): void;
/**
* 20131122 dw
* 执行修改表前,获得新的修改设置后的表结构。
* 此方法实时生成,每次调用都新建一个对象返回。
* @return
* @throws SQLException
*/
getNewTableMetaData(): TableMetaData;
/**
* 返回修改前,数据表的结构。
* @return
* @throws SQLException
*/
getSourceTableMetaData(): TableMetaData;
/**
* 修改字段的实现模式
* 默认使用alter模式
* @param mode
*/
setModifyMode(mode: number): void;
/**
* 20131122 dw
* 在临时表模式下,是否删除原表。
* 默认是删除。
* @param isdelete
*/
isDeleteOldTableOnTempModel(isdelete: boolean): void;
/**
* 20131122 dw
* 在临时表模式下,如果设置了不删除原表,那么返回更名后的原表名。
* @return
*/
getOldTableName(): string;
/**
* 初始化状态,清除先前所做的修改字段的信息;
*/
clear(): void;
/**
* 批量提交字段修改;
* @throws SQLException
*/
commit(): void;
/**
* 遍历执行修改的所有ddl<br>
* 执行commit后调用。
* @param i
* @return
*/
getDDL(i: number): string;
/**
* 返回需要执行的所有ddl的个数;<br>
* 执行commit后调用。
* @return
*/
getDDLCount(): number;
}
declare interface CreateTable {
/**
* 设置是否创建临时表。
* 1.临时表只存在于当前会话中,不同的会话,可以使用同名临时表。
* 2.创建的临时表(conn调用close时)会自动回收。
* 3.临时表不会影响数据库的全局表列表。
*
* 当需要在一个操作事务中,创建一个临时表读写数据,且事物完成后不再需要它时,推荐使用临时表。
* @param isTempTable
*/
setCreateTempTable(isTempTable: boolean): void;
/**
* 清除定义的表结构
*/
clear(): void;
/**
* 定义表名
* @param tablename
*/
setTableName(tablename: string): void;
/**
* 定义表注释
* @param comment
*/
setTableComment(comment: string): void;
/**
* 是否允许自动更更改表名;
* 当指定的表名被占用时,起作用;
* 默认值是false
* @param f
*/
setAutoChangeTableName(f: boolean): void;
/**
* 是否允许自动调整字段的长度;
* 根据数据库的限制,自动调整字段长度,比如:主键列组合长度超过限制等;
* 默认值是false
* @param f
*/
setAutoAdjustFieldLength(f: boolean): void;
/**
* 定义自增长字段
* @param fieldname
*/
addAutoIncColumn(fieldname: string): void;
/**
* 定义自增长字段
* @param fieldname
* @param comments 字段注释
*/
addAutoIncColumn(fieldname: string, comments: string): void;
/**
* 定义整型字段
* @param fieldname
*/
addIntegerColumn(fieldname: string, len: number): void;
/**
* 定义整型字段
* @param fieldname
* @param defaultvalue
* @param nullable
* @param comments 字段注释
*/
addIntegerColumn(fieldname: string, len: number, defaultvalue: string, nullable: boolean, comments: string): void;
/**
* 增加唯一属性
* @param fieldname
* @param defaultvalue
* @param nullable
* @param unique
* @param comments
*/
addIntegerColumn(fieldname: string, len: number, defaultvalue: string, nullable: boolean, unique: boolean, comments: string): void;
/**
* 定义字符类型字段
* @param fieldname
* @param len
*/
addVarcharColumn(fieldname: string, len: number): void;
/**
* 定义字符类型字段
* @param fieldname
* @param len
* @param defaultvalue
* @param nullable
* @param comments 字段注释
*/
addVarcharColumn(fieldname: string, len: number, defaultvalue: string, nullable: boolean, comments: string): void;
/**
* 增加唯一属性
* @param fieldname
* @param len
* @param defaultvalue
* @param nullable
* @param unique
* @param comments
*/
addVarcharColumn(fieldname: string, len: number, defaultvalue: string, nullable: boolean, unique: boolean, comments: string): void;
/**
* 定义浮点类型字段
* @param fieldname
* @param len 精度,如果精度<=0,表示不能确定字段精度,将定义为无精度的浮点类型,支持任意的精度。
* @param scale 小数位数
*/
addNumericColumn(fieldname: string, len: number, scale: number): void;
/**
* 定义浮点类型字段
* @param fieldname
* @param len 精度,如果精度为0,表示不知道该字段精度,将定义为无精度的浮点类型。
* @param scale 小数位数
* @param defaultvalue
* @param nullable
* @param comments 字段注释
*/
addNumericColumn(fieldname: string, len: number, scale: number, defaultvalue: string, nullable: boolean, comments: string): void;
/**
* 增加唯一属性
* @param fieldname
* @param len
* @param scale
* @param defaultvalue
* @param nullable
* @param unique
* @param comments
*/
addNumericColumn(fieldname: string, len: number, scale: number, defaultvalue: string, nullable: boolean, unique: boolean, comments: string): void;
/**
* 定义日期类型
* @param fieldname
*/
addDateColumn(fieldname: string): void;
/**
* 定义日期类型
* @param fieldname
* @param defaultvalue
* @param nullable
* @param comments 字段注释
*/
addDateColumn(fieldname: string, defaultvalue: string, nullable: boolean, comments: string): void;
/**
* 增加唯一属性
* @param fieldname
* @param defaultvalue
* @param nullable
* @param unique
* @param comments
*/
addDateColumn(fieldname: string, defaultvalue: string, nullable: boolean, unique: boolean, comments: string): void;
/**
* 定义timestamp字段
* @param fieldname
*/
addTimestampColumn(fieldname: string): void;
/**
* 定义timestamp字段
* @param fildname
* @param defaultvalue
* @param nullable
* @param comments 字段注释
*/
addTimestampColumn(fildname: string, defaultvalue: string, nullable: boolean, comments: string): void;
/**
* 定义clob字段
* @param fieldname
*/
addClobColumn(fieldname: string): void;
addClobColumn(fieldname: string, comments: string): void;
/**
* 定义bolb字段
* @param fieldname
*/
addBlobColumn(fieldname: string): void;
addBlobColumn(fieldname: string, comments: string): void;
/**
* 定义字段,使用java.sql.Types定义字段类型
* @param fieldname
* @param type {@link java.sql.Types} 定义的字段类型
* @param len
* @param scale
* @param defaultvalue
* @param nullable
* @param comments 字段注释
*/
addColumnWithSqlTypes(fieldname: string, type: number, len: number, scale: number, defaultvalue: string, nullable: boolean, comments: string): void;
/**
* 增加唯一属性
* @param fieldname
* @param type
* @param len
* @param scale
* @param defaultvalue
* @param nullable
* @param unique
* @param comments
*/
addColumnWithSqlTypes(fieldname: string, type: number, len: number, scale: number, defaultvalue: string, nullable: boolean, unique: boolean, comments: string): void;
/**
* 定义字段
* @param fieldname
* @param coltype {@link com.succez.commons.jdbc.ColumnTypes} 定义的字段类型
* @param len
* @param scale
* @param defaultvalue
* @param nullable
* @param comments 字段注释
*/
addColumn(fieldname: string, coltype: string, len: number, scale: number, defaultvalue: string, nullable: boolean, comments: string): void;
/**
* 增加唯一属性
* @param fieldname
* @param coltype
* @param len
* @param scale
* @param defaultvalue
* @param nullable
* @param unique
* @param comments
*/
addColumn(fieldname: string, coltype: string, len: number, scale: number, defaultvalue: string, nullable: boolean, unique: boolean, comments: string): void;
/**
* 定义主键
* @param keys
*/
setPrimaryKey(keys: string[]): void;
/**
* 定义索引
* @param fields
* @param unique
*/
addIndex(fields: string[], unique: boolean): void;
/**
* 定义索引,自定索引名。
* @param indexName
* @param fields
* @param unique
*/
addIndex(indexName: string, fields: string[], unique: boolean): void;
/**
* 定义索引,自定索引名和字段排序顺序。
* @param indexName
* @param fields
* @param unique
*/
addIndex(indexName: string, fields: string[], unique: boolean, sorts: { [k: string]: string }): void;
/**
* 创建表,返回表名
* @return
*/
createTable(): string;
/**
* 如果指定的表不存在,则创建表;
* 否则,修改表结构,使表结构和定义的结构一致;
* 返回执行修改语句的条数。
* @return
*/
repairTable(): number;
/**
* 修改表结构指定修改模式<br>
* {@link AlterTable#MODE_ALTER}时,返回执行修改语句的条数。
* @param mode {@link AlterTable#MODE_ALTER}, {@link AlterTable#MODE_TEMPTABLE}
* @throws SQLException
*/
repairTable(mode: number): number;
}
0条评论
评论