尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

时序数据库 IoTDB 集成 MyBatisPlus,告别复杂编码,简化时序数据 ORM 开发

时序数据库 IoTDB 集成 MyBatisPlus,告别复杂编码,简化时序数据 ORM 开发
📅 发布时间:2026/6/20 15:38:54
时序数据库 IoTDB 集成 MyBatisPlus,告别复杂编码,简化时序数据 ORM 开发代码简洁、高效开发,让你的时序数据应用构建更“丝滑”!

在物联网后台与服务模块的开发过程中,复杂编码与重复操作始终是开发团队难以绕开的挑战,不仅增加额外工作量,也抬高了系统的长期维护成本。

为有效缓解这一痛点,国产原生时序数据库 IoTDB 实现了与代码生成工具 MyBatisPlus 的深度集成,使开发者能够借助其强大的通用数据操作能力,以更简洁、更符合工程习惯的方式,高效管理时序数据。

  • 开箱即用,告别繁琐:借助 MyBatisPlus 的通用 Mapper,无需编写基础 CRUD 代码,即可快速完成企业级增删改查操作。

  • 高度兼容,无缝融入:集成设计充分尊重原有开发习惯,现有 MyBatisPlus 项目可平滑引入 IoTDB,时序数据与业务数据可用同一套架构统一处理。

  • 条件构造,灵活查询:支持通过 Lambda 表达式构建复杂查询条件,让时序数据的筛选与统计像操作传统数据库一样直观方便。

欢迎查看用户手册了解更多内容!

01 功能简介

MyBatis-Plus Generator 是 MyBatis-Plus 框架内置的代码生成工具,基于数据库表结构自动生成标准化的实体类、Mapper 接口、Service 层及 Controller 层代码,集成 MyBatis-Plus 的通用 CRUD 方法(如 BaseMapper 内置增删改查)和条件构造器(QueryWrapper),支持 Lombok、Swagger 等扩展注解,通过简单配置即可快速构建符合企业级规范的持久层代码,大幅减少单表操作的重复开发工作,适用于快速搭建后台管理系统或标准化数据服务模块。

下文将介绍如何使用 Mybatis-Plus Generator 连接 IoTDB,并生成数据库表对应的实体类、Mapper 接口、Service 层及 Controller 层代码文件。

02 使用步骤

(1) 版本要求

  • IoTDB:>= 2.0.2-SNAPSHOT

  • mybatisPlus:>= 3.5.10

  • iotdb-jdbc:>= 2.0.4-SNAPSHOT

(2) 操作流程

IoTDB 环境搭建

  1. 下载、安装并启动 IoTDB 服务,具体可参考官网快速上手页面:https://www.timecho.com/docs/zh/UserGuide/latest-Table/QuickStart/QuickStart_timecho.html

  2. 创建数据库 database1 及表 table1 / table2,相关 SQL 语句可参考官网示例数据:https://www.timecho.com/docs/zh/UserGuide/latest-Table/Reference/Sample-Data.html

创建 Maven 项目

  1. 创建 Maven 项目。

  2. 在 pom 中增加如下依赖配置:

<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties><dependencies><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.10</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.10</version></dependency><dependency><groupId>com.github.jeffreyning</groupId><artifactId>mybatisplus-plus</artifactId><version>1.7.5-RELEASE</version></dependency><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.0</version></dependency><dependency><groupId>org.apache.iotdb</groupId><artifactId>iotdb-jdbc</artifactId><version>2.0.4-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>3.4.3</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.4.3</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>3.0.0</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>3.0.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.36</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>3.4.3</version><scope>test</scope></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>2.0.13</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.5.16</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.5.16</version></dependency>
</dependencies>
<build><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.2</version><dependencies><dependency><groupId>org.apache.iotdb</groupId><artifactId>mybatis-generator-plugin</artifactId><version>2.0.2-SNAPSHOT</version></dependency></dependencies><configuration><verbose>true</verbose><overwrite>true</overwrite><configurationFile>src/main/resources/generatorConfig.xml</configurationFile></configuration></plugin></plugins>
</build>
  1. 新建执行文件,修改目标 IoTDB 的 url/ username/password,和目标文件生成目录 outputDir/pathInfo:
package org.apache.iotdb;import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import org.apache.iotdb.jdbc.IoTDBDataSource;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;import java.sql.Types;
import java.util.Collections;@SpringBootApplication
@MapperScan("org.apache.iotdb.mapper")
public class Main{public static void main(String[] args){SpringApplication.run(Main.class, args);IoTDBDataSource dataSource = new IoTDBDataSource();dataSource.setUrl("jdbc:iotdb://127.0.0.1:6667/database1?sql_dialect=table");dataSource.setUser("root");dataSource.setPassword("root");FastAutoGenerator generator = FastAutoGenerator.create(new DataSourceConfig.Builder(dataSource).driverClassName("org.apache.iotdb.jdbc.IoTDBDriver"));generator.globalConfig(builder -> {builder.author("IoTDB").enableSwagger().dateType(DateType.ONLY_DATE).outputDir("src/main/java");}).packageConfig(builder -> {builder.parent("org.apache.iotdb").mapper("mapper").pathInfo(Collections.singletonMap(OutputFile.xml, "src/main/java/org/apache/iotdb/xml"));}).dataSourceConfig(builder -> {builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {int typeCode = metaInfo.getJdbcType().TYPE_CODE;switch (typeCode) {case Types.FLOAT:return DbColumnType.FLOAT;default:return typeRegistry.getColumnType(metaInfo);}});}).strategyConfig(builder -> {builder.addInclude("table1");builder.entityBuilder().enableLombok()
//                            .addIgnoreColumns("create_time").enableFileOverride();builder.serviceBuilder().formatServiceFileName("%sService").formatServiceImplFileName("%sServiceImpl").convertServiceFileName((entityName -> entityName + "Service")).enableFileOverride();builder.controllerBuilder().enableRestStyle().enableFileOverride();}).strategyConfig(builder -> {builder.addInclude("table2");builder.entityBuilder().enableLombok()
//                            .addIgnoreColumns("create_time").enableFileOverride();builder.serviceBuilder().formatServiceFileName("%sService").formatServiceImplFileName("%sServiceImpl").convertServiceFileName((entityName -> entityName + "Service")).enableFileOverride();builder.controllerBuilder().enableRestStyle().enableFileOverride();}).execute();}
}

生成目标文件

  1. 运行 Main.java。

  2. 查看日志输出,如下所示即生成目标文件:

16:10:08.943 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator -- ==========================文件生成完成!!!==========================

查看目标文件

org/apache/iotdb/controller/Table1Controller.java
org/apache/iotdb/controller/Table2Controller.java
org/apache/iotdb/entity/Table1.java
org/apache/iotdb/mapper/Table2.xml
org/apache/iotdb/service/Table1Service.java  
org/apache/iotdb/service/Table2Service.java
org/apache/iotdb/service/impl/Table1ServiceImpl.java  
org/apache/iotdb/service/impl/Table2ServiceImpl.java
org/apache/iotdb/xml/Table1Mapper.xml
org/apache/iotdb/xml/Table2Mapper.xml

image

修改注释

手动调整生成的代码 org/apache/iotdb/entity/Table1.java,org/apache/iotdb/entity/Table2.java 使其支持多主键查询。

// 新增 import
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;//  新增注解 @MppMultiId
@MppMultiId
// 修改注解 @TableId() -->> @TableField()
@TableField("time")
privateDate time;//  新增注解 @MppMultiId
@MppMultiId
// 修改注解 @TableId() -->> @TableField()
@TableField("region")
privateString region;//  新增注解 @MppMultiId
@MppMultiId
// 修改注解 @TableId() -->> @TableField()
@TableField("plant_id")
privateString plantId;//  新增注解 @MppMultiId
@MppMultiId
// 修改注解 @TableId() -->> @TableField()
@TableField("device_id")
privateString deviceId;

03 使用示例

完整的使用示例可参考 GitHub 源码:https://github.com/apache/iotdb-extras/tree/master/examples/mybatisplus-generator

相关新闻

  • 总结复习:动态规划
  • 大模型json输出的系统提示词
  • 2025 年 11 月车棚厂家权威推荐榜单:充电桩车棚,自行车棚,7字型车棚,双挑车棚,光伏车棚,pvdf车棚,小区车棚,汽车棚设计安装服务优选

最新新闻

  • Kimi K2.5模型架构深度解析:超长上下文工业级优化实战
  • 广东卖名酒不想吃亏?找这家就对了!多维度实力解析,全粤跨城高价上门回收 - 爱吃西瓜的西高地
  • Kimi-K2全栈拆解:从芯片调度到认知架构的范式迁移
  • 拒绝虚构模型:AI技术写作必须坚守事实底线
  • WindowResizer终极指南:轻松强制调整任意窗口大小,彻底告别尺寸限制烦恼
  • GPT-4o架构解析:低延迟语音与原生多模态统一建模

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号