• mybatis-generator自动生成代码插件


      mybatis自动生成代码(实体类、Dao接口等)是很成熟的了,就是使用mybatis-generator插件。 它是一个开源的插件,使用maven构建最好,可以很方便的执行

      插件官方简介:
        http://www.mybatis.org/generator/index.html
      插件的GitHub地址:
        https://github.com/mybatis/generator

    如何使用mybatis-generator插件呢?只需要三步: 

    1、修改pom.xml配置文件

      网上大部分说法都要添加依赖:mybatis-generator-core。但是我测试之后并不需要,可能新版本改版过了吧,只要在<build>中添加<plugin> 就可以了。(如果报错的话再加上mybatis-generator-core的依赖吧)
      需要特别注意的是:这里要指定配置文件目录,名字可以自定义。

    <build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.6</version>
                <configuration>
                    <!--指定配置文件目录-->
                    <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
                <dependencies>
                    <!--这里添加了mysql的驱动依赖,就不需要再配置文件中配置了-->
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.44</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

    2、添加pom中指定的配置文件generatorConfig.xml

      比较重要的一个是,该插件生成代码有带xml映射文件的 和不带xml而是使用注解的 两种方式,只需要配置 <javaClientGenerator> 标签的 type 属性:
        XMLMAPPER 生成xml映射文件, ANNOTATEDMAPPER 生成的dao采用注解来写sql

      mybatis-generator的属性详解网上也有很多资料,下面给出我的一个模板:

    <?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>
        <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包,如果在pom文件中添加了依赖,那么这里就可以注释掉了-->
        <!--<classPathEntry-->
        <!--location="E:MavenmvnRespomysqlmysql-connector-java5.1.44mysql-connector-java-5.1.44.jar"/>-->
    
        <!-- 一个数据库一个context -->
        <context id="bing" targetRuntime="MyBatis3">
    
            <!-- 生成的model实现Serializable借口 -->
            <plugin type="org.mybatis.generator.plugins.SerializablePlugin">
                <!--<property name="suppressJavaInterface" value="true"/>-->
            </plugin>
    
            <!-- 自动生成equals方法和hashcode方法 -->
            <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"/>
    
            <!-- 该插件给实体类添加toString() -->
            <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
    
            <!--<plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin"/>-->
            <plugin type="org.mybatis.generator.plugins.MapperAnnotationPlugin"/>
    
            <plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"/>
    
    
            <commentGenerator>
                <property name="suppressDate" value="true"/>
                <!-- 是否去除自动生成的注释 true:是 : false:否 -->
                <property name="suppressAllComments" value="false"/>
                <property name="addRemarkComments" value="false"/>
            </commentGenerator>
    
            <!--数据库链接URL,用户名、密码 -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"
                            userId="root"
                            password="123456">
            </jdbcConnection>
    
            <!-- 类型转换 -->
            <javaTypeResolver>
                <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
            <!-- 生成模型(实体)的包名和位置-->
            <javaModelGenerator targetPackage="com.ajz.course.ddao.model" targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
    
            <!-- 生成映射文件的包名和位置-->
            <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
    
            <!-- 生成DAO的包名和位置-->
            <!-- XMLMAPPER生成xml映射文件, ANNOTATEDMAPPER 生成的dao采用注解来写sql -->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.ajz.course.ddao.mapper" targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
            <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
            <table tableName="course" domainObjectName="CourseModel">
                <generatedKey column="id" sqlStatement="MySql" identity="true"/>
            </table>
            <!-- table可以有多个,每个数据库中的表都可以写一个table,tableName表示要匹配的数据库表,也可以在tableName属性中通过使用%通配符来匹配所有数据库表,只有匹配的表才会自动生成文件 -->
            <table tableName="rel_course_school" domainObjectName="CourseSchoolModel">
                <generatedKey column="id" sqlStatement="MySql" identity="true"/>
            </table>
    
        </context>
    </generatorConfiguration>

    3、执行mybatis-generator

      如果使用IDEA来加载项目,那再简单不过了。在【Maven Projects】窗口,找到对应项目下的【Plugins】目录,找到【mybatis-generator】下第一个generate命令,直接双击就好了,如图:

        

      如果非要自己写命令,或者就是非maven项目,那就需要在第二步中必须指定本地的数据库驱动,将目录切换到lib目录下,然后执行脚本:
        java -jar mybatis-generator-core-1.3.6.jar -configfile generatorConfig.xml -overwrite

      (PS:这种方法暂时没验证过啊,网上都这么写的,囧)

      注意:重复执行会覆盖


    原创文章,欢迎转载,转载请注明出处!

  • 相关阅读:
    论文阅读 dyngraph2vec: Capturing Network Dynamics using Dynamic Graph Representation Learning
    升级openssh的补救
    二阶魔方
    Extra argument start service sshd does not support chkconfig
    通用帮助类集合Shiny.Helper库的使用
    .net core Redis客户端Shiny.Redis包库的使用
    .net core mqtt客户端Shiny.Mqtt库的使用
    基于Sqlsugar单例模式封装的库ShinySqlSugar的使用
    加速训练之并行化 tf.data.Dataset 生成器
    ffmpeg protocol concat 进行ts流合并视频的时间戳计算及其音画同步方式一点浅析
  • 原文地址:https://www.cnblogs.com/acm-bingzi/p/mybatis_generator.html
Copyright © 2020-2023  润新知