mybatis generator 逆向工程代码生成

来源:互联网 发布:微信 for mac dmg 编辑:程序博客网 时间:2024/05/17 04:25

编写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>


    <classPathEntry location="E:\generator\mysql-connector-java-5.1.34.jar" />


    <context id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3" >


        <!-- 自动识别数据库关键字,默认false,如果设置为true,根据SqlReservedWords中定义的关键字列表;
            一般保留默认值,遇到数据库关键字(Java关键字),使用columnOverride覆盖
         -->


        <property name="autoDelimitKeywords" value="false"/>
        <!-- 生成的Java文件的编码 -->
        <property name="javaFileEncoding" value="UTF-8"/>
        <!-- 格式化java代码 -->
        <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
        <!-- 格式化XML代码 -->
        <property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>


        <!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>


        <!-- 必须要有的,使用这个配置链接数据库
            @TODO:是否可以扩展
         -->


        <!--序列化-->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>


        <!--    生成分页    -->
        <!--<plugin type="com.zc.im.util.mybatis.MySQLLimitPlugin"/>-->
        <commentGenerator>
            <!-- 代码合并时需要用到 -->
            <property name="suppressAllComments" value="false"/>
            <!--关闭注释-->
            <property name="suppressDate" value="true"/>
        </commentGenerator>


        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://192.168.1.200:3306/zaixianv4" userId="root" password="root1234">
            <!-- 这里面可以设置property属性,每一个property属性都设置到配置的Driver上 -->
        </jdbcConnection>


        <!-- java类型处理器
            用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl;
            注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和 NUMERIC数据类型;
        -->
        <javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl">
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>




        <!-- java模型创建器,是必须要的元素
            负责:1,key类(见context的defaultModelType);2,java类;3,查询类
            targetPackage:生成的类要放的包,真实的包受enableSubPackages属性控制;
            targetProject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,MBG不会自动建目录
         -->
        <javaModelGenerator targetPackage="com.etc.sms.domain" targetProject="src/main/java">
            <property name="MySQLLimitPlugin" value="com.zc.im.util.mybatis.MySQLLimitPlugin"/>
            <!--  for MyBatis3/MyBatis3Simple
                自动为每一个生成的类创建一个构造方法,构造方法包含了所有的field;而不是使用setter;
             -->
            <property name="constructorBased" value="false"/>


            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
            <property name="enableSubPackages" value="true"/>


            <!-- for MyBatis3 / MyBatis3Simple
                是否创建一个不可变的类,如果为true,
                那么MBG会创建一个没有setter方法的类,取而代之的是类似constructorBased的类
             -->
            <property name="immutable" value="false"/>


            <property name="trimStrings" value="true"/>
        </javaModelGenerator>


        <sqlMapGenerator targetPackage="mybatis/user" targetProject="src/main/resources">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>


        <!--   XMLMAPPER     -->
        <javaClientGenerator targetPackage="com.etc.sms.mapper" type="MIXEDMAPPER" targetProject="src/main/java">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>


        <table tableName="data_message_record_warning" >


            <!-- 参考 javaModelGenerator 的 constructorBased属性-->
            <property name="constructorBased" value="false"/>


            <!-- 默认为false,如果设置为true,在生成的SQL中,table名字不会加上catalog或schema; -->
            <property name="ignoreQualifiersAtRuntime" value="false"/>


            <!-- 参考 javaModelGenerator 的 immutable 属性 -->
            <property name="immutable" value="false"/>


            <!-- 如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE,生成的属性名字就是BORN_DATE,而不会是bornDate -->
            <property name="useActualColumnNames" value="false"/>


            <generatedKey column="id" sqlStatement="MySql"/>


        </table>


    </context>


</generatorConfiguration>



项目结构:



在maven项目引入依赖:

<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>



编写generatorTest类来运行xml文件:


package com.etc.sms.test;


import java.io.File;
import java.util.ArrayList;
import java.util.List;


import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;


/**
 * mybatis 逆向代码生成工具
 * @author wangcc
 *
 */
public class generatorTest {

public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
callback, warnings);
myBatisGenerator.generate(null);
}


}



原创粉丝点击