java influxdb_Java版InfluxDB工具类

这是一个关于使用Java操作InfluxDB的测试类,包括插入、查询和删除数据。测试了数据插入,查询所有数据,基于TAG_CODE的查询以及删除特定数据。通过InfluxDBConnect工具类进行数据库交互。
摘要由CSDN通过智能技术生成

1 packagecom.influxdb.test;2

3 importjava.util.ArrayList;4 importjava.util.Date;5 importjava.util.HashMap;6 importjava.util.List;7 importjava.util.Map;8

9 importjunit.framework.Assert;10

11 importorg.influxdb.dto.QueryResult;12 importorg.influxdb.dto.QueryResult.Result;13 importorg.influxdb.dto.QueryResult.Series;14 importorg.junit.Before;15 importorg.junit.Test;16 importorg.springframework.beans.BeanWrapperImpl;17

18 importcom.influxdb.pojo.CodeInfo;19

20 public classInfluxDBTest {21

22 privateInfluxDBConnect influxDB;23 private String username = "admin";//用户名

24 private String password = "admin";//密码

25 private String openurl = "http://127.0.0.1:8086";//连接地址

26 private String database = "test_db";//数据库

27 private String measurement = "sys_code";28

29 @Before30 public voidsetUp(){31 //创建 连接

32 influxDB = newInfluxDBConnect(username, password, openurl, database);33

34 influxDB.influxDbBuild();35

36 influxDB.createRetentionPolicy();37

38 //influxDB.deleteDB(database);39 //influxDB.createDB(database);

40 }41

42 @Test43 public void testInsert(){//测试数据插入

44 Map tags = new HashMap();45 Map fields = new HashMap();46 List list = new ArrayList();47

48 CodeInfo info1 = newCodeInfo();49 info1.setId(1L);50 info1.setName("BANKS");51 info1.setCode("ABC");52 info1.setDescr("中国农业银行");53 info1.setDescrE("ABC");54 info1.setCreatedBy("system");55 info1.setCreatedAt(newDate().getTime());56

57 CodeInfo info2 = newCodeInfo();58 info2.setId(2L);59 info2.setName("BANKS");60 info2.setCode("CCB");61 info2.setDescr("中国建设银行");62 info2.setDescrE("CCB");63 info2.setCreatedBy("system");64 info2.setCreatedAt(newDate().getTime());65

66 list.add(info1);67 list.add(info2);68

69 for(CodeInfo info : list){70

71 tags.put("TAG_CODE", info.getCode());72 tags.put("TAG_NAME", info.getName());73

74 fields.put("ID", info.getId());75 fields.put("NAME", info.getName());76 fields.put("CODE", info.getCode());77 fields.put("DESCR", info.getDescr());78 fields.put("DESCR_E", info.getDescrE());79 fields.put("CREATED_BY", info.getCreatedBy());80 fields.put("CREATED_AT", info.getCreatedAt());81

82 influxDB.insert(measurement, tags, fields);83 }84 }85

86 @Test87 public void testQuery(){//测试数据查询

88 String command = "select * from sys_code";89 QueryResult results =influxDB.query(command);90

91 if(results.getResults() == null){92 return;93 }94 List lists = new ArrayList();95 for(Result result : results.getResults()) {96

97 List series=result.getSeries();98 for(Series serie : series) {99 //Map tags = serie.getTags();

100 List> values =serie.getValues();101 List columns =serie.getColumns();102

103 lists.addAll(getQueryData(columns, values));104 }105 }106

107 Assert.assertTrue((!lists.isEmpty()));108 Assert.assertEquals(2, lists.size());109 }110

111 @Test112 public void testQueryWhere(){//tag 列名 区分大小写

113 String command = "select * from sys_code where TAG_CODE='ABC'";114 QueryResult results =influxDB.query(command);115

116 if(results.getResults() == null){117 return;118 }119 List lists = new ArrayList();120 for(Result result : results.getResults()) {121

122 List series=result.getSeries();123 for(Series serie : series) {124 List> values =serie.getValues();125 List columns =serie.getColumns();126

127 lists.addAll(getQueryData(columns, values));128 }129 }130

131 Assert.assertTrue((!lists.isEmpty()));132 Assert.assertEquals(1, lists.size());133

134 CodeInfo info = lists.get(0);135

136 Assert.assertEquals(info.getCode(), "ABC");137

138 }139

140 @Test141 public voiddeletMeasurementData(){142 String command = "delete from sys_code where TAG_CODE='ABC'";143 String err =influxDB.deleteMeasurementData(command);144 Assert.assertNull(err);145 }146

147 /***整理列名、行数据***/

148 private List getQueryData(List columns, List>values){149 List lists = new ArrayList();150

151 for (Listlist : values) {152 CodeInfo info = newCodeInfo();153 BeanWrapperImpl bean = newBeanWrapperImpl(info);154 for(int i=0; i< list.size(); i++){155

156 String propertyName = setColumns(columns.get(i));//字段名

157 Object value = list.get(i);//相应字段值

158 bean.setPropertyValue(propertyName, value);159 }160

161 lists.add(info);162 }163

164 returnlists;165 }166

167 /***转义字段***/

168 privateString setColumns(String column){169 String[] cols = column.split("_");170 StringBuffer sb = newStringBuffer();171 for(int i=0; i< cols.length; i++){172 String col =cols[i].toLowerCase();173 if(i != 0){174 String start = col.substring(0, 1).toUpperCase();175 String end = col.substring(1).toLowerCase();176 col = start +end;177 }178 sb.append(col);179 }180 returnsb.toString();181 }182 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值