zoukankan      html  css  js  c++  java
  • 使用Maven插件(plugin)MyBatis Generator逆向工程

    内容来自官网:http://www.mybatis.org/generator/index.html

    generatorConfig.xml 模板(参考:http://www.mybatis.org/generator/configreference/xmlconfig.html)

    <?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>元素用于将类路径位置添加到MyBatis Generator(MBG)运行的类路径中。通常用于加载数据库驱动 -->
        <classPathEntry location="...."/>
        <context id="DB2Tables" targetRuntime="MyBatis3">
            <!--实体类实现实例化接口 -->
            <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
            <!--实体生成toString() -->
            <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
            <!--这个插件将方法添加到Example类(实际上是Criteria内部类)以支持不区分大小写的LIKE搜索 -->
            <plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin"/>
            <!--生成hashCode和equals方法 -->
            <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"/>
            <!--给每个Mapper接口添加@Mapper注解 -->
            <!--<plugin type="org.mybatis.generator.plugins.MapperAnnotationPlugin"/> -->
            <!--开启分页,接受org.apache.ibatis.session.RowBounds参数 -->
            <plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"/>
            <!-- 设置连接数据库参数 -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306" userId="root" password="root">
            </jdbcConnection>
            <!-- <javaTypeResolver>元素用于定义Java类型解析器的属性。 Java Type Resolver用于根据数据库列信息计算Java类型。
                如果可能的话,默认的Java Type Resolver尝试通过替换Integral类型来使JDBC DECIMAL和NUMERIC类型更易于使用(Long,Integer,Short等)。如果此行为不受欢迎,请将属性“forceBigDecimals”设置为“true”。
                如果您需要与默认值不同的行为,您也可以替换您自己的实现。 该元素是<context>元素的可选子元素。 -->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
            <!-- 配置生成实体类(pojo,bean...)的位置,targetPackage:包名;targetProject:目标路径 -->
            <javaModelGenerator
                    targetPackage="cn.liangqinghai.pojo" targetProject="src/main/java">
                <!-- 是否生成带参构造器 -->
                <property name="constructorBased" value="false"/>
                <!-- 是否根据schema生成子包(有点...):参考官网 -->
                <property name="enableSubPackages" value="true"/>
                <!-- 该属性用于选择MyBatis Generator是否会生成不可变的模型类 - 这意味着类不会有“setter”方法,构造函数将接受类中每个字段的值。
                    如果为true,则强制使用参数化构造函数构建模型类,而不考虑“constructorBased”属性的值。 -->
                <property name="immutable" value="false"/>
                <!-- 指定超类 -->
                <property name="rootClass" value="java.lang.Object"/>
                <!-- 去除空格 -->
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
            <!-- 配置Mapper配置xml位置 -->
            <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
                <!-- 与javaModelGenerator保持一致 -->
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
            <!-- 指定Mapper接口位置,type:指定类型(ANNOTATEDMAPPER:注解【sqlMapGenerator配置不生效】,XMLMAPPER:xml配置;MIXEDMAPPER:注解和xml混合【条件查询交给xml文件,普通增删改查交给注解】) -->
            <javaClientGenerator type="XMLMAPPER"  targetPackage="cn.lianqinghai.dao" targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
            <!-- 配置数据库对应的表 -->
            <!-- tableName:表名;domainObjectName:指定类名 -->
            <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer">
                <!-- 【前提:命名带下划线_】是否使用驼峰命名,false代表使用,ture代表直接使用数据库字段名 -->
                <property name="useActualColumnNames" value="true"/>
                <!-- insert主键返回 -->
                <generatedKey column="ID" sqlStatement="MySql" identity="true"/>
            </table>
    
        </context>
    </generatorConfiguration>
    pom.xml
    <!-- mybatis generator 自动生成代码插件 -->
                <!--命令:mybatis-generator:generate-->
                <!--详情参考:http://www.mybatis.org/generator/running/runningWithMaven.html-->
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.2</version>
                    <configuration>
                        <!--配置路径-->
                        <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
                        <!--配置中指定的类路径存在对应的Mapper或者pojo将覆盖-->
                        <overwrite>true</overwrite>
                        <!--显示日志-->
                        <verbose>true</verbose>
                    </configuration>
                    <!--设置插件数据库驱动依赖-->
                    <dependencies>
    
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>5.1.46</version>
                        </dependency>
    
                    </dependencies>
                </plugin>
    
    

    插件中指定了数据库驱动依赖,generatorConfig.xml配置文件中的classPathEntry标签可以删掉

    构建命令:

    • mybatis-generator:generate
  • 相关阅读:
    yii中sphinx索引配置解析
    Java HashMap工作原理及实现?
    Spring AOP 实现原理与 CGLIB 应用
    Spring 容器AOP的实现原理——动态代理
    代理模式(静态代理)
    Java中的字符串常量池
    JAVA对象的深度克隆
    重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
    访问修饰符public,private,protected和default的区别?
    Java中的字符串常量池?
  • 原文地址:https://www.cnblogs.com/liangqinghai/p/9020462.html
Copyright © 2011-2022 走看看