zl程序教程

您现在的位置是:首页 >  其他

当前栏目

逆向工程----MBG

2023-03-14 22:56:39 时间

逆向工程

逆向工程概念


MBG概念


步骤1: 导入相关依赖

        <!--mybatis的逆向工程-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.7</version>
        </dependency>
        <!--使用插件启动mbg-->
        <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.7</version>
        </dependency>

引入mybatis-generator.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>
    <!--引入数据库连接配置信息-->
    <properties resource="jdbc.properties"/>
    <!--引用mybatis-generator驱动 已导入包,可以不用引用-->
    <!--<classPathEntry location="E:maven-repositoryorgmybatisgeneratormybatis-generator-core1.3.7mybatis-generator-core-1.3.7.jar"/>-->

    <!--context:
        id:唯一标识
        targetRuntime:运行时环境。MyBatis3DynamicSql(默认值)|MyBatis3|MyBatis3Simple
        defaultModelType:生成对象类型。conditional|flat|hierarchical
    -->
    <!--
     targetRuntime="MyBatis3" :生成复杂版的增删查改
     targetRuntime="MyBatis3Simple":生成简单版的增删查改
    -->
    <context id="mysql_generator" defaultModelType="flat"
             targetRuntime="MyBatis3">
        <!--javaFileEncoding 设置生成的文件编码格式。不设置,使用平台默认编码-->
        <property name="javaFileEncoding" value="UTF-8"/>
        <!--targetJava8 设置生成的代码可以使用Java8+功能。默认值true-->
        <property name="targetJava8" value="true"/>

        <!--plugin 插件配置-->
        <!--<plugin type=""></plugin>-->

        <!--commentGenerator 注释相关设置 -->
        <commentGenerator>
            <!--设置 生成的代码是否包含注释 默认false 生成注释。 true:不生成注释-->
            <property name="suppressAllComments" value="false"/>
        </commentGenerator>
        <!-- 数据库连接配置 connectionFactory和jdbcConnection 标签二选一-->
<!--        <connectionFactory>
            <property name="driverClass" value="${jdbc.driver}"/>
            <property name="connectionURL" value="${jdbc.url}"/>
            <property name="userId" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </connectionFactory>-->
        <!-- 数据库连接配置 connectionFactory和jdbcConnection 标签二选一-->
        <jdbcConnection
        driverClass="${jdbc.driver}"
        connectionURL="${jdbc.url}"
        userId="${jdbc.username}"
        password="${jdbc.password}"
        />

        <!--Java类型解析器用于根据数据库列信息计算Java类型-->
        <!--<javaTypeResolver>-->

        <!--</javaTypeResolver>-->

        <!--定义Java模型生成器的属性
               targetPackage:生成POJO代码存放的package的位置,即生成的POJO放在哪个包下面
               targetProject:生成的代码存放的项目路径
        -->
        <javaModelGenerator targetPackage="Com.POJO"
                            targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!--mapper xml文件位置,sql映射文件生成器,指定xml文件生成位置-->
        <sqlMapGenerator targetPackage="MyBaits.mapper" targetProject="src/main/resources">
            <!-- enableSubPackages:是否让schema作为包的后缀 默认false -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!--dao接口生成的地方-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="Com.Dao" targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 默认false -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!--table:指定要逆向生成哪个数据表
           tableName:指定表名
           domainObjectName:数据库中的表对应生成的实体类的名字
           如果这里不指定对象名,默认就是表名大写
           -->
        <table tableName="lock" domainObjectName="Lock"></table>
        <!--如果想要生成多张表,下面可以继续添加-->
        <!--<table tableName="tb_users2"></table>-->
    </context>

</generatorConfiguration>

使用代码运行,也可以用命令行

public class test {
    @Test
    public void testMBG() throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;

        ConfigurationParser cp = new ConfigurationParser(warnings);
        Reader reader = Resources.getResourceAsReader("mbg.xml");
        Configuration config = cp.parseConfiguration(reader);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }
}

效果


小tips


使用插件方式启动mbg,需要在build标签中进行设置,以及引入最开始给的插件依赖

           <!--引入mbg插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
        </plugins>

MBG的具体使用看这篇文章

MBG的使用

mybatis 逆向工程MBG