OpenDS Core SDK for Java

A Java library for OpenAPI's HTTP-based Core APIs.


下载地址

opends-sdk-java

SDK安装

将压缩包中的opends-sdk-java-0.1.0-jar-with-dependencies.jar导入到本地项目工程中即可

注意事项

  1. jdk支持版本:1.7以上
  2. 字符编码使用UTF-8
  3. 支持的数据类型:number, string, date(建议使用 %Y-%m-%d %H:%M:%S 格式)
  4. 数据源名, 工作表名, 同一张表的不同字段名, title不可重复
  5. 当前的架构设计对于频繁的小量数据写入处理效率不高,所以建议还是尽量批量的更新数据, 但是大量的数据传输会提高等待时间,因此建议尽量将数据量控制在5万条左右
  6. 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

  1. 用于保存返回信息的javaBean,如:PreviewInfo,TableInfo,Field,Schema等均在cn.bdp.bean中

异常信息

  1. 所有的服务器端异常都将抛出包含错误码以及错误信息的BDPException,错误码可以参照API文档

  2. 本地的异常将直接抛出带英文信息的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();
    

results matching ""

    No results matching ""