• mybatis自动生成代码插件mybatis-generator使用流程(亲测可用)


    mybatis-generator是一款在使用mybatis框架时,自动生成model,dao和mapper的工具,很大程度上减少了业务开发人员的手动编码时间

    坐着在idea上用maven构建springboot项目,亲测可用,流程记录如下

    1.添加依赖

    <!--mybatis逆向工程-->
            <dependency>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-core</artifactId>
                <version>1.3.7</version>
            </dependency>

    2.添加maven插件,在build的plugins中添加

    <!--mybatis逆向工程-->
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.7</version>
                    <configuration>
                        <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                        <verbose>true</verbose>
                        <overwrite>true</overwrite>
                    </configuration>
                </plugin>

    3.插件的配置文件generatorConfig.xml,我在文件里面写了详细的注释

    <?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>
    
        <!--
            可以用于加载配置项或者配置文件
            resource:配置资源加载地址,使用resource,从classpath开始找,比如com/myproject/generatorConfig.properties
            url:配置资源加载地质,使用URL的方式,比如file:///C:/myfolder/generatorConfig.properties.
            注意,两个属性只能选址一个
         -->
        <!--导入属性配置-->
        <properties resource="datasource.properties"/>
    
        <!--指定特定数据库的jdbc驱动jar包的位置-->
        <!-- 暂时不清楚怎么指定相对路径,只能指定maven仓库中的jar包 -->
        <classPathEntry location="D:/repository/mysql/mysql-connector-java/8.0.12/mysql-connector-java-8.0.12.jar"/>
    
        <!--
        context:生成一组对象的环境
        id:必选,上下文id,用于在生成错误时提示
        targetRuntime:
            1,MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample;
            2,MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample;
    -->
        <context id="default" targetRuntime="MyBatis3">
    
            <!--生成的bean是没有tostring方法的,所以如果要想生成tostring方法的话,需要在generatorConfig.xml中加上如下配置-->
            <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
            <!-- 该元素最多可以配置1个,可以生成文件的注释 -->
            <commentGenerator>
                <!--阻止生成的注释包含时间戳,默认为false-->
                <property name="suppressDate" value="true"/>
                <!--阻止生成注释,默认为false-->
                <property name="suppressAllComments" value="true"/>
                <!--设置要使用的Java文件的编码-->
                <property name="javaFileEncoding" value="UTF-8"/>
            </commentGenerator>
    
            <!--jdbc的数据库连接,引入上述的配置文件datasource.properties的内容,这里直接写死也可以 -->
            <jdbcConnection
                    driverClass="${jdbc.driverClass}"
                    connectionURL="${jdbc.url}"
                    userId="${jdbc.username}"
                    password="${jdbc.password}">
            </jdbcConnection>
    
            <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
            <!-- Model模型生成器,用来生成数据库对应的实体类
                targetPackage     指定生成的实体类 所在的包名
                targetProject     指定在该项目下所在的路径
            -->
            <javaModelGenerator targetPackage="com.pdzx.entity" targetProject="D:/workspaces/pdzx-customer-microservice/pdzx-manage-system/src/main/java">
                <!-- 是否允许子包,eg:fase路径com.pdzx.entity, true:com.pdzx.entity..[schemaName] -->
                <property name="enableSubPackages" value="false"/>
                <!-- 是否对model添加 构造函数 -->
                <property name="constructorBased" value="false"/>
                <!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 -->
                <property name="immutable" value="false"/>
                <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
                <!--如果设置为true就会生成类似这样  public void setUsername(String username) {this.username = username == null ? null : username.trim();}-->
                <property name="trimStrings" value="false"/>
            </javaModelGenerator>
    
            <!--mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件,就是用xml写SQL的方式 -->
            <sqlMapGenerator targetPackage="com.pdzx.mapper" targetProject="D:/workspaces/pdzx-customer-microservice/pdzx-manage-system/src/main/java">
                <property name="enableSubPackages" value="false"/>
            </sqlMapGenerator>
    
            <!--
                    生成易于使用的针对Model对象和XML配置文件 的代码,即dao层接口文件
                    type="ANNOTATEDMAPPER",基于注解的Mapper接口,不会有对应的XML映射文件
                    type="MIXEDMAPPER",XML和注解的混合形式,(上面这种情况中的)SqlProvider注解方法会被XML替代
                    type="XMLMAPPER",所有的方法都在XML中,接口调用依赖XML文件。
            -->
            <!-- targetPackage:mapper接口dao生成的位置 -->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.pdzx.dao" targetProject="D:/workspaces/pdzx-customer-microservice/pdzx-manage-system/src/main/java">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
            </javaClientGenerator>
    
            <!--
            tableName为对应的数据库表
             domainObjectName是要生成的实体类
              enable*ByExample是否生成 example类   -->
            <table tableName="b_template_useclient"
                   domainObjectName="TemplateUseclient"
                   enableCountByExample="false"
                   enableUpdateByExample="false"
                   enableDeleteByExample="false"
                   enableSelectByExample="false"
                   selectByExampleQueryId="false">
                <!-- 上面的属性都可以使用子标签形式表示 -->
                <!-- 是否使用真实字段名,设置为false将自动驼峰转换 -->
                <property name="useActualColumnNames" value="false" />
            </table>
    
        </context>
        
    </generatorConfiguration>

    4.数据库配置文件datasource.properties

    jdbc.driverClass=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://139.196.51.7:3306/pdafc?characterEncoding=utf8&useSSL=false&allowMultiQueries=true&nullCatalogMeansCurrent=true&tinyInt1isBit=false
    jdbc.username=xxx
    jdbc.password=xxx

    注意两个问题的解决方案:

    1. mybatis自动生成的代码只有insert()和insertSelective()

      解决方案:在jdbc url后增加下面代码即可

    nullCatalogMeansCurrent=true

    2.mybatis 自动生成代码对于tinyint 类型自动解析成BOOLEAN类型

      解决方案:对于tinyint 类型自动解析成BYTE类型  在jdbc.url后增加下面代码即可

     tinyInt1isBit=false

    5.如下图所示,执行该插件生成代码即可

  • 相关阅读:
    使用IDEA 创建Mevan项目后,项目中没有Java源文件夹的解决方案
    Head FIRST HTML & CSS 16/3/15
    Head FIRST HTML & CSS 16/3/11
    hdu 5375 dp
    Thinking in java 16/3/8plus
    Thinking in java 16/3/8
    Beauty of mathematics
    Thinking in java 16/3/6
    Thinking in java 16/3/5
    SQL SERVER迁移--更换磁盘文件夹
  • 原文地址:https://www.cnblogs.com/lusaisai/p/13329527.html
Copyright © 2020-2023  润新知