OpenDS Core SDK for Java
A Java library for OpenAPI's HTTP-based Core APIs.
下载地址
SDK安装
将压缩包中的opends-sdk-java-0.1.0-jar-with-dependencies.jar
导入到本地项目工程中即可
注意事项
- jdk支持版本:1.7以上
- 字符编码使用UTF-8
- 支持的数据类型:number, string, date(建议使用 %Y-%m-%d %H:%M:%S 格式)
- 数据源名, 工作表名, 同一张表的不同字段名, title不可重复
- 当前的架构设计对于频繁的小量数据写入处理效率不高,所以建议还是尽量批量的更新数据, 但是大量的数据传输会提高等待时间,因此建议尽量将数据量控制在5万条左右
- ACCESS_TOKEN从BDP网站的开发者中心获取
SDK简介
- 工具类:
类 | 实例方法 | 描述 |
---|---|---|
BDPClient | BDPClient(String accessToken, String domain) | 构造方法 |
Map<String,DS> getAllDs() |
获取所有数据源对象 | |
DS getDs(String name) | 根据数据源名获取数据源对象 | |
DS createDs(String name) | 根据名字创建数据源 | |
void deleteDs(String name) | 根据名字删除数据源 | |
DS | Map<String, Table> getAllTables() |
获取该数据源的所有工作表对象 |
Table createTable(String name,List<Schema> schema,String[] uniqKey,String title) |
创建工作表 | |
void deleteTable(String name) | 根据名字删除工作表 | |
Table getTable(String name) | 根据名字获取工作表 | |
void update(String[] tbNames) | 根据工作表名列表更新相应工作表 | |
void updateAll() | 级联更新该数据源的下的所有工作表 | |
String getDsId() | 获取数据源id | |
Table | void insertDataByName(String[] fields, String[][] data) | 向指定的字段插入数据,根据字段名 |
void insertDataById(String[] fieldIds, String[][] data) | 向指定的字段插入数据,根据字段id | |
void bulkDelete(String where) | 根据where条件批量删除数据 | |
void deleteDataByName(String[] fields, String[][] data) | 根据fields列表中的字段名删除数据行 | |
void deleteDataById(String[] fieldIds, String[][] data) | 根据fields列表中的字段id删除数据行 | |
void updateDataByName(String[] fields, String[][] data) | 根据fields列表中的字段名更新数据行 | |
void updateDataById(String[] fieldIds, String[][] data) | 根据fields列表中的字段id更新数据行 | |
void commit() | 提交原始工作表 | |
void revert() | 回滚原始工作表中未提交的数据 | |
void clean() | 清空该工作表 | |
List<Field> getFields() |
列出所有字段 | |
void addField(String field,String type,String uniqIndex,String title) | 添加指定字段 | |
void modifyTable(String alias) | 修改表的别名(在web端显示的名称) | |
void modifyField(String field,String type,String uniqIndex,String title) | 修改字段属性 | |
PreviewInfo preview() | 预览数据 | |
TableInfo getInfo() | 获取表信息 | |
String getId() | 获取表id |
- javaBean类:
类 | 描述 | 字段 | 字段描述 |
---|---|---|---|
Field | 描述字段信息 | String name | 字段名 |
String field_id | 字段ID | ||
String uniq_index | 是否为主键,‘1’代表是,'0'不是 | ||
String type | 字段类型,只能是string/number/date | ||
String title | 字段别名 | ||
PreviewInfo | 预览数据对象 | List<Schema> schema |
字段信息列表 |
List<List<String>> data |
数据集合 | ||
String data_count | 数据条数 | ||
Schema | 表结构对象 | String name | 字段名 |
String type | 字段类型 | ||
String remark | 字段描述 | ||
String title | 字段别名 | ||
TableInfo | 描述工作表信息对象 | String tb_id | 工作表id |
String name | 工作表名 | ||
String data_count | 工作表记录数 | ||
String title | 工作表别名 | ||
List<Field> fields |
字段列表 |
SDK说明
BDPClient
用于初始化客户端,进行数据源增、删、查操作等等。
构造方法:
BDPClient(String accessToken, String domain)
示例:
BDPClient client = new BDPClient(ACCESS_TOKEN, "domain");
实例方法:
Map<String,DS> getAllDs()
获取所有数据源对象,返回键为数据源名字,值为相应数据源对象的Map。- 参数:
- 无
- 返回:
- DS对象Map
示例:
Map<String, DS> map = client.getAllDs();
- 参数:
DS getDs(String name)
根据名字获取数据源,返回数据源对象- 参数:
- name 数据源名称
- 返回:
- DS对象
示例:
DS ds = client.getDs("dsName");
- 参数:
void deleteDs(String name)
根据名字删除数据源- 参数:
- name 数据源名称
- 返回:
- 无
示例:
client.deleteDs("dsName");
- 参数:
DS createDs(String name)
根据名字创建数据源,返回创建的数据源对象- 参数:
- name 数据源名称
返回:
- 本次创建的DS对象
示例:
DS ds = client.createDs("dsName");
- 参数:
DS
数据源类,可以管理该数据源内的各种工作表,并对工作表进行增、删、改、查等操作。
通过调用BDPClient类的createDs方法来创建DS对象,不能通过直接实例化DS类来创建数据源. 通过调用BDPClient类的getDs方法来获取相应的DS对象.
使用
DS ds = client.getDs("dsName");
实例方法
Map<String, Table> getAllTables()
获取该数据源的所有工作表对象,返回键为表名,值为工作表对象的Map- 参数:
- 无
- 返回:
- Table对象Map
示例:
Map<String, Table> tables = ds.getAllTables();
- 参数:
Table createTable(String name,List<Schema> schema,String[] uniqKey,String title)
在该数据源中创建工作表,返回该工作表, schema中的type只能是"string"/"number"/"date"其中一种。对于每个字段的设定,remark和title参数可以为null。- 参数:
- name 工作表名
- schema 描述表结构schema列表
- uniqKey 联合主键数组,可以为null
- title 工作表别名,可以为null
- 返回:
- 本次创建的Table对象
示例:
List<Schema> schemas = new ArrayList<Schema>(); Schema schema1 = new Schema("field1", "string",null,null); Schema schema2 = new Schema("field2", "string",null,null); String[] uniqKey = new String[]{"field1"}; schemas.add(schema1); schemas.add(schema2); Table table = ds.createTable(name, schemas, uniqKey, null);
- 参数:
void deleteTable(String name)
根据名字删除工作表- 参数:
- name 工作表名
- 返回:
- 无
示例:
ds.delete_table("tableName")
- 参数:
Table getTable(String name)
根据名字获取工作表- 参数:
- name 工作表名
- 返回:
- Table对象
示例:
Table table = ds.getTable("tbName");
- 参数:
void update(String[] tbNames)
根据工作表名列表更新相应工作表- 参数:
- name 需要更新的工作表名列表
- 返回:
- 无
示例:
String[] tables = new String[]{"tbName1","tbName2"}; ds.update(tables);
- 参数:
void updateAll()
级联更新该数据源的下的所有工作表- 参数:
- 无
- 返回:
- 无
示例:
ds.updateAll();
- 参数:
String getDsId()
获取数据源id参数:
- name 无
返回:
- 数据源id
示例:
String dsId = ds.get_id();
Table
工作表类,对工作表进行增、删、改的操作。
通过调用DS类的createTable方法而不是通过实例化Table类来创建新表。 通过调用DS类的getTable方法来获取相应表的Table实例。
使用
Table table = ds.getTable("tbName");
实例方法
void insertDataByName(String[] fields, String[][] data)
向指定的字段插入数据,根据字段名参数:
- fields 字段名数组
- data 存储表数据的二维数组
返回:
- 无
示例:
String[] fields = {"field1","field2","birth"}; String[][] data = new String[][] { { "1", "data1", "1991-09-07 12:35:59" }, { "2", "data2", "1994-08-23 02:41:50" } }; table.insertDataByName(fields, data);
void insertDataById(String[] fieldIds, String[][] data)
向指定的字段插入数据,根据字段id参数:
- fieldIds 字段id数组
- data 存储表数据的二维数组
返回:
- 无
示例:
//获取fieldId List<Field> fields = table.getInfo().getFields(); String[] fieldIds = new String[fields.size()]; int index = 0; for (Field field : fields) { fieldIds[index++] = field.getField_id(); } String[][] data = new String[][] { { "1", "data1", "1991-09-07 12:35:59" }, { "2", "data2", "1994-08-23 02:41:50" } }; table.insertDataByName(fields, data);
void bulkDelete(String where)
根据where条件批量删除数据- 参数:
- where 删除条件
- 返回:
- 无
示例:
String where = "`id`=1"; table.bulkDelete(where);
- 参数:
void deleteDataByName(String[] fields, String[][] data)
根据fields列表中的字段名删除数据行参数:
- fields 字段名数组
- data 存储表数据的二维数组
返回:
- 无
示例:
String[] fields = {"field1","field2","birth"}; String[][] data = new String[][] { { "1", "data1", "1991-09-07 12:35:59" }, { "2", "data2", "1994-08-23 02:41:50" } }; table.deleteDataByName(fields, data);
void deleteDataById(String[] fieldIds, String[][] data)
根据fields列表中的字段id删除数据行参数:
- fieldIds 字段id数组
- data 存储表数据的二维数组
返回:
- 无
示例:
String[][] data = new String[][] { { "1", "data1", "1991-09-07 12:35:59" }, { "2", "data2", "1994-08-23 02:41:50" } }; //获取fieldId List<Field> fields = table.getInfo().getFields(); String[] fieldIds = new String[4]; int index = 0; for (Field field : fields) { fieldIds[index++] = field.getField_id(); } table.deleteDataById(fieldIds, data);
void updateDataByName(String[] fields, String[][] data)
根据fields列表中的字段名更新数据行参数:
- fields 字段名数组
- data 存储表数据的二维数组
返回:
- 无
示例:
String[] fields = {"field1","field2","birth"}; String[][] data = new String[][] { { "1", "data1", "1991-09-07 12:35:59" }, { "2", "data2", "1994-08-23 02:41:50" } }; table.updateDataByName(fields, data);
void updateDataById(String[] fieldIds, String[][] data)
根据fields列表中的字段id更新数据行参数:
- fieldIds 字段id数组
- data 存储表数据的二维数组
- 返回:
- 无
- 示例:
String[][] data = new String[][] { { "1", "data1", "1991-09-07 12:35:59" }, { "2", "data2", "1994-08-23 02:41:50" } }; //获取fieldId String[] fieldIds = new String[fields.size()]; int index = 0; for (Field field : fields) { fieldIds[index++] = field.getField_id(); } table.updateDataById(fieldIds, data);
void commit()
提交原始工作表参数:
- 无
返回:
- 无
示例:
Table table = ds.getTable("tableName"); table.commit();
void revert()
回滚原始工作表中未提交的数据参数:
- 无
返回:
- 无
示例:
Table table = ds.getTable("tableName"); table.revert();
void clean()
清空该工作表参数:
- 无
返回:
无
示例:
Table table = ds.getTable("tableName"); table.clean();
List<Field> getFields()
列出所有字段参数:
- 无
返回:
- table下的所有Field列表
示例:
List<Field> fields = table.getFields()
void addField(String field,String type,String uniqIndex,String title)
添加指定字段, type只能是"string"/"number"/"date"其中一种。uniqIndex为1表示该字段为主键,0为非主键, title为字段别名,可以为null。参数:
- field 字段名
- type 字段类型,只能是string/number/date
- uniqIndex 是否为联合主键,1是,0不是,可以为null
- title 字段别名,可以为null
返回:
- 无
示例:
table.addField("newField", "string", "1", "alias");
void deleteField(String field)
删除指定字段- 参数:
- field 字段名
- 返回:
- 无
示例:
Table table = ds.getTable(tableName); table.deleteField("field1");
- 参数:
void modifyTable(String alias)
修改表的别名(在web端显示的名称)参数:
- alias 表别名
返回:
- 无
示例:
table.modifyTable("aliasName");
void modifyField(String field,String type,String uniqIndex,String title)
修改字段属性,type只能是"string"/"number"/"date"其中一种。uniqIndex为1表示该字段为主键,0为非主键, title为字段别名,可以为null。参数:
- field 字段名
- type 字段类型,只能是string/number/date
- uniqIndex 是否为联合主键,1是,0不是,可以为null
- title 字段别名,可以为null
返回:
- 无
示例:
table.modifyField("addField", "number", "1", "haha");
PreviewInfo preview()
预览数据参数:
- 无
返回:
- PreviewInfo对象
示例:
PreviewInfo info = table.preview();
TableInfo getInfo()
获取表信息参数:
- 无
返回:
TableInfo对象
示例:
TableInfo info = table.getInfo();
String getId()
获取表id参数:
- 无
返回:
- 工作表id
示例:
String tbId = table.getId();
javaBean
- 用于保存返回信息的javaBean,如:PreviewInfo,TableInfo,Field,Schema等均在cn.bdp.bean中
异常信息
所有的服务器端异常都将抛出包含错误码以及错误信息的BDPException,错误码可以参照API文档
本地的异常将直接抛出带英文信息的BDPException
Example
获取指定数据源对象并获取其中所有的工作表
import cn.bdp.bean.Field; import cn.bdp.bean.Schema; import cn.bdp.bean.TableInfo; import cn.bdp.sdk.BDPClient; import cn.bdp.sdk.DS; import cn.bdp.sdk.Table; BDPClient client = new BDPClient(ACCESS_TOKEN, "domain"); DS ds = client.getDs("dsName"); Map<String,Table> tablesMap = ds.get_all_tables(); Table table = ds.getTable("tableName"); table.commit();