概述
公司现在用的是postgresql + mybatis,现在想换成iotdb,iotdb是阿里开发的一个非关系型数据库
具有这些特点,具体的内容可以参考 https://iotdb.apache.org/zh/UserGuide/V0.12.x/IoTDB-Introduction/Features.html
- 灵活的部署方式
- 云端一键部署
- 终端解压即用
- 终端-云端无缝连接(数据云端同步工具)
- 低硬件成本的存储解决方案
- 高压缩比的磁盘存储(10亿数据点硬盘成本低于1.4元)
- 目录结构的时间序列组织管理方式
- 支持复杂结构的智能网联设备的时间序列组织
- 支持大量同类物联网设备的时间序列组织
- 可用模糊方式对海量复杂的时间序列目录结构进行检索
- 高通量的时间序列数据读写
- 支持百万级低功耗强连接设备数据接入(海量)
- 支持智能网联设备数据高速读写(高速)
- 以及同时具备上述特点的混合负载
- 面向时间序列的丰富查询语义
- 跨设备、跨传感器的时间序列时间对齐
- 面向时序数据特征的计算
- 提供面向时间维度的丰富聚合函数支持
- 极低的学习门槛
- 支持类SQL的数据操作
- 提供JDBC的编程接口
- 完善的导入导出工具
- 完美对接开源生态环境
- 支持开源数据分析生态系统:Hadoop、Spark
- 支持开源可视化工具对接:Grafana
首先是我用到的框架版本:
Spring 5.3.3,Mybatis 3.5,iotdb 0.12.5
- maven里要引用jar包,如果不想自己实现数据库交互工具可以不用引用iotdb session这个jar
<!-- iotdb CRUD原生会话,如果不用iotdb session访问可以不引用 --> <dependency> <groupId>org.apache.iotdb</groupId> <artifactId>iotdb-session</artifactId> <version>0.12.5</version> </dependency> <!-- iotdb JDBC --> <dependency> <groupId>org.apache.iotdb</groupId> <artifactId>iotdb-jdbc</artifactId> <version>0.12.5</version> </dependency>
2. 创建mapper里的查询语句
/*table_name要换成具体的time_series, 比如root.group.ln
列名需要注意的是,要标注上别名,不然注入不上
*/
<select id="getDeviceData" parameterType="map" resultMap="deviceData">
SELECT code as code,value as value
FROM table_name
WHERE
code=#{code}
and time > ${startTime}
and time < ${endTime}
</select>
创建 entity,dao这些跟平时创建关系型数据库时的一样
@Data
public class DeviceData {
String code;
/**
* 海拔
*/
double altitude;
/**
* 纬度
*/
double latitude;
/**
* 插入时间
*/
long insertTime;
/**
* 检测值
*/
String value;
/**
* 经度
*/
double longitude;
/**
* 质量
*/
String quality;
}
public interface DeviceDataDao extends IQueryDao {
List<DeviceData> getDeviceData( String code, String startTime, String endTime);
}
这里有几个点需要注意一下:
- mapper里写查询语句的时候table_name要换成具体的time_series, 比如root.group.ln
列名需要标注上别名,不然查询出来的列名是root.group.ln.code这样的,注入不到resultmap里去 - startTime和endTime我用的是$取值,mybatis里#和$是有区别的,用#取值mybatis会自动根据你传参类型处理后赋值,比如是字符串会加上单引号',而$不做处理直接将传参替换,测试中我发现iotdb按time字段查询是不支持字符串型的时间查询的,所以这里暂时这么传值,以后有时间了在研究
最后,就是配置数据源,建议配置成动态数据源,根据业务查询需要动态切换数据源。
<dataSource>
<name>iotdb</name>
<alias>dataSource_iotdb</alias>
<dbType>iotdb</dbType>
<driver>org.apache.iotdb.jdbc.IoTDBDriver</driver>
<driverUrl>jdbc:iotdb://localhost:6667/</driverUrl>
<user>root</user>
<password>123456</password>
<status>actived</status>
<isDefault>false</isDefault>
<variables>
<testOnBorrow>false</testOnBorrow>
<testWhileIdle>true</testWhileIdle>
<validationQuery>select 1 from root;</validationQuery>
<maxPoolPreparedStatementPerConnectionSize>20</maxPoolPreparedStatementPerConnectionSize>
<removeAbandonedTimeout>1800</removeAbandonedTimeout>
<testOnReturn>false</testOnReturn>
<maxActive>20</maxActive>
<logAbandoned>true</logAbandoned>
<poolPreparedStatements>true</poolPreparedStatements>
<minIdle>3</minIdle>
<maxWait>3600000</maxWait>
<removeAbandoned>true</removeAbandoned>
<timeBetweenEvictionRunsMillis>3600000</timeBetweenEvictionRunsMillis>
<minEvictableIdleTimeMillis>300000</minEvictableIdleTimeMillis>
<initialSize>3</initialSize>
<filters>stat</filters>
</variables>
</dataSource>
启动项目就查询出来了,这里我省略了altitude等几个列
跟用命令查出来的结果一样
最后
以上就是苗条高跟鞋为你收集整理的Spring中用Mybatis查询Apache IoTDB的全部内容,希望文章能够帮你解决Spring中用Mybatis查询Apache IoTDB所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复