Mybatis Generator

1. 概述

MyBatis Generator 是 MyBatis 官方推出的持久层代码自动化生成工具,通过解析数据库表结构自动生成实体类(POJO)、Mapper 接口及 XML 映射文件,可快速构建标准化 CRUD 操作逻辑,显著减少基础代码开发成本。为简化时序数据库场景下的集成流程,IoTDB 官方基于此工具扩展推出 IoTDB-Mybatis-Generator,针对 IoTDB 的时序数据模型特性进行深度适配,能够自动生成符合时序存储语义的实体类,mapper接口及对应的mapper.xml文件,为 IoTDB 的高效接入提供了标准化、可复用的工程实践方案。

2. 使用步骤

2.1 版本要求

  • IoTDB: >=2.0.2

  • mybatis-generator-plugin: >=2.0.3

  • iotdb-jdbc: >=2.0.3

2.2 操作流程

  1. 安装并启动 IoTDB , 可参考 IoTDB 快速入门

  2. 获取插件

    • 方式一:直接引用 Maven 依赖

    • 方式二:通过克隆插件源码,进行本地依赖安装。

git clone https://github.com/apache/iotdb-extras.git
cd .\mybatis-generator\
mvn clean install
  1. 在需要使用插件的项目 pom 文件中引用目标依赖
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<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>{lastest_version}</version>
                     <!--例如: <version>2.0.3</version> -->
                </dependency>
            </dependencies>
            <configuration>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
                <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
            </configuration>
        </plugin>
    </plugins>
</build>
  1. 自定义配置文件generatorConfig.xml放到 resources 目录下,generatorConfig.xml内容可参考如下模板,其中可维护项主要涉及jdbcConnectionjavaModelGeneratorsqlMapGeneratorjavaClientGeneratortable
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <classPathEntry location="/apache/iotdb/iotdb-client/jdbc/target/iotdb-jdbc-2.0.4-SNAPSHOT-jar-with-dependencies.jar"/>
    <!-- mvn mybatis-generator:generate hierarchical/flat-->
    <context id="myBatis3Simple" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <plugin type="org.apache.iotdb.mybatis.plugin.LombokPlugin"/>
        <plugin type="org.apache.iotdb.mybatis.plugin.BatchInsertPlugin"/>
        <plugin type="org.apache.iotdb.mybatis.plugin.SerializablePlugin"/>
        <plugin type="org.mybatis.generator.plugins.VirtualPrimaryKeyPlugin"/>
        <commentGenerator type="org.apache.iotdb.mybatis.plugin.generator.SwaggerCommentGenerator">
            <property name="suppressAllComments" value="true"/>
            <property name="suppressDate" value="true"/>
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>
        <jdbcConnection driverClass="org.apache.iotdb.jdbc.IoTDBDriver" connectionURL="jdbc:iotdb://127.0.0.1:6667/database1?sql_dialect=table" userId="root" password="root"/>
        <javaTypeResolver type="org.apache.iotdb.mybatis.plugin.generator.resolver.IoTDBJavaTypeResolver">
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <javaModelGenerator targetPackage="org.apache.iotdb.mybatis.plugin.model" targetProject="src/main/java">
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="org.apache.iotdb.mybatis.plugin.xml" targetProject="src/main/java">
        </sqlMapGenerator>
        <javaClientGenerator type="XMLMAPPER" targetPackage="org.apache.iotdb.mybatis.plugin.mapper" targetProject="src/main/java">
        </javaClientGenerator>
        <table schema="database1" tableName="table1" domainObjectName="table1" enableSelectByPrimaryKey="true" enableInsert="true" enableDeleteByPrimaryKey="true">
            <property name="virtualKeyColumns" value="time,region,plant_id,device_id,model_id,maintenance,temperature,humidity,status,arrival_time"/>
        </table>
    </context>
</generatorConfiguration>
  1. 执行如下命令,即可在配置的目标目录下生成目标代码。
mvn mybatis-generator:generate
  1. 查看目标代码
# You can see the target file in your Project
org/apache/iotdb/mybatis/plugin/model/table1.java
org/apache/iotdb/mybatis/plugin/mapper/table1Mapper.java
org/apache/iotdb/mybatis/plugin/xml/table1Mapper.xml

3. 使用示例

详细的使用示例可参考源码 examples/mybatis-generator