alamide的笔记库「 87篇笔记 」「 小破站已建 0 天啦 🐶 」


MyBatis Generator

2023-04-02, by alamide

1. 引入插件

<build>
    <plugins>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.4.2</version>
            <dependencies>
                <dependency>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                    <version>3.5.13</version>
                </dependency>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>8.0.32</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>
...
</project>

2. 配置文件

generatorConfig.xml

<!DOCTYPE generatorConfiguration PUBLIC
        "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <context id="simple" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis_generator"
                        password="root"
                        userId="root"/>

        <javaTypeResolver>
            <property name="useJSR310Types" value="true"/>
            <property name="forceBigDecimals" value="true"/>
        </javaTypeResolver>

        <javaModelGenerator targetPackage="com.alamide.guli.entity" targetProject="src/main/java">
            <property name="exampleTargetPackage" value="com.alamide.generator.entity.example"/>
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>

        <javaClientGenerator type="XMLMAPPER" targetPackage="com.alamide.generator.mapper" targetProject="src/main/java"/>

        <table tableName="edu_teacher"/>
    </context>
</generatorConfiguration>

3.配置文件属性

3.1 <jdbcConnection/>

配置 JDBC Connection

<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/mybatis_generator"
                password="root"
                userId="root"/>

3.2 <commentGenerator/>

注释相关,不太重要

Property Name Property Values
suppressAllComments false or true 默认false,是否不写注释
suppressDate false or true 默认 false,在注释中是否添加时间戳
addRemarkComments false or true 默认 false,是否在注释中加上数据库的注释
dateFormat 注释中 日期的格式 yyyy-MM-dd HH:mm:ss
<commentGenerator>
    <property name="suppressAllComments" value="true"/>
</commentGenerator>

3.3 <javaModelGenerator/>

Java Model 相关,具体的配置如下

必须属性

Attribute Description
targetPackage 生的 Java Model 包目录
targetProject 目标工程位置,如:src/main/java

可选属性

Property Name Property Values
constructorBased false or true 默认false,是否生成有参,无参构造器
rootClass 父类全类名,如配置最终 extends 这个类,不能实现接口,如 implements Serializable

3.4 <sqlMapGenerator/>

Mybatis 映射文件配置

Attribute Description
targetPackage 生的包目录,如 mapper
targetProject 目标工程位置,src/main/resources

3.5 <javaClientGenerator/>

Mybatis Mapper 接口

<javaClientGenerator type="XMLMAPPER" targetPackage="com.alamide.generator.mapper" targetProject="src/main/java"/>

3.6 <table/>

3.6.1 <columnOverride>

可以在生成 Java Model 的时候,对字段进行一些转换,例如数据库的有一些表中,有 is_deleted 软删除字段,类型为 TINYINT 。默认会被转换为 Byte 型, 在使用的时候会有一些不便,希望转换为 Integer

<table tableName="t_example">
    <columnOverride column="is_deleted" jdbcType="TINYINT" javaType="java.lang.Integer"/>
</table>

3.7 <javaTypeResolver/>

类型转换器

Property Name Property Values
forceBigDecimals 默认 false,把 JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true 时把 JDBC DECIMAL和 NUMERIC 类型解析为 java.math.BigDecimal
useJSR310Types 是否使用 JSR-310 标准,默认为 false,为 true 时,DATE->java.time.LocalDate,TIME->java.time.LocalTime,TIMESTAMP->java.time.LocalDateTime
Tags: Mybatis
~ belongs to alamide@163.com