说明
使用IotDb推荐的原生方法,版本0.12.2
IotDb 官网
github
参考文章
依赖
<dependency>
<groupId>org.apache.iotdb</groupId>
<artifactId>iotdb-session</artifactId>
<version>0.12.2</version>
</dependency>
Property&Bean
@ConfigurationProperties(prefix = "iotdb")
public class IotDbProperties {
@ApiModelProperty("IP")
private String host;
@ApiModelProperty("端口号,默认6667")
private Integer port;
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("缓冲区大小")
private Integer fetchSize;
@Bean
public Session iotSession(){
return new Session(host,port,username,password,fetchSize);
}
}
应用
@Service(value = "IotDb")
public class IotDbConnectServiceImpl {
@Resource
private Session iotDbSession;
//IotDb 的path
private final String path = "root.xx.xx.xx"
private Object parseCellInfo() {
try {
iotDbSession.open(false);
String sql = "select * from " + cellPath + " order by time desc limit 1";
SessionDataSet ret = iotDbSession.executeQueryStatement(sql);
//列头
dataSet.getColumnNames();
//每列的类型
dataSet.getColumnTypes();
while (dataSet.hasNext()) {
//返回一行记录
List<Field> fields = ret.next().getFields();
if (CollectionUtils.isEmpty(fields)){
return null;
}
//你的处理
}
} catch (StatementExecutionException | IoTDBConnectionException e) {
throw new BusinessException(I18nMsgSystem.DATA_MISS.getMessage());
}
}
}
TIPS
返回的field内容如下:
每个field都包含一个dataType字段,要根据这个字段取对应类型的value。
private Object parseField(Field field) {
switch (field.getDataType()){
case FLOAT:
return field.getFloatV();
case INT32:
return field.getIntV();
case INT64:
return field.getLongV();
case DOUBLE:
return field.getDoubleV();
case BOOLEAN:
return field.getBoolV();
case TEXT:
return field.getStringValue();
default:
break;
}
return null;
}