首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MyBatis-17MyBatis代码生成器(逆向工程)MBG使用

MyBatis-17MyBatis代码生成器(逆向工程)MBG使用

作者头像
小小工匠
发布2021-08-17 10:59:32
发布2021-08-17 10:59:32
5450
举报
文章被收录于专栏:小工匠聊架构小工匠聊架构

概述

我们前面的博文中了解了MyBatis的基本用法,也写了很多单表的CRUD方法,基本上每个表都需要用到这些方法,这些方法都很规范而且比较类似。

当数据库表的字段较少时,写起来还能接受,一旦字段过多或者需要在很多个表中写这些基本方法的时候,是不是很崩溃?

MyBatis开发团队提供了一个很强大的代码生成器—MyBatis Generator (MBG).

MBG通过丰富的配置可以生成不同类型的代码,代码包含了数据库表对应的实体类、Mapper接口类、Mapper XML文件和 Example对象等。 这些代码文件几乎包含了全部的单表操作方法。

使用MBG可以极大程度上方便我们使用MyBatis,减少很多重复操作。


参考配置实例

在项目的src/main/resources中创建一个generator目录,在该目录下创建一个generatorConfig.xml文件

内容如下:

代码语言:javascript
复制
<generatorConfiguration> 
     
     <properties resource="db.properties" />
    
    

    
    <context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
        
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        
        <property name="javaFileEncoding" value="UTF-8"/>
        
        
        
        <commentGenerator>
            
            <property name="suppressDate" value="true"/>
            
            <property name="addRemarkComments" value="true"/>
        commentGenerator>


        
        <jdbcConnection driverClass="${jdbc.driver}"
                        connectionURL="${jdbc.url}"
                        userId="${jdbc.username}"
                        password="${jdbc.password}">
              
        jdbcConnection>

        

        
        <javaModelGenerator targetPackage="test.model" targetProject="src\main\java">
            
            <property name="trimStrings" value="true" />
            
            <property name="rootClass" value="com.artisan.mybatis.simple.model.BaseEntity" />

            
            
            
        javaModelGenerator>


        
        <sqlMapGenerator targetPackage="test.xml"  targetProject="src\main\resources">
            
        sqlMapGenerator>

        
        <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao"  targetProject="src\main\java">
            
            
        javaClientGenerator>



        

        
        <table tableName="%">
            
            <generatedKey column="id" sqlStatement="MySql"/>

            

            

            

            

            

            

            

            

            

            

            

            
        table>
     context>
generatorConfiguration>

运行 MyBatis Generator

常用的有如下方式:

  • 使用Java编写运行代码
  • 从命令提示符运行
  • 使用Maven Plugin运行
  • 使用Eclipse插件运行

我们这里使用 第一种方式 Java编写代码运行

第一步: 添加Maven依赖

代码语言:javascript
复制
<dependency>
   <groupId>org.mybatis.generatorgroupId>
    <artifactId>mybatis-generator-coreartifactId>
    <version>${mybatis-generator-core.version}version>
dependency>

第二步: 编写Java代码

代码语言:javascript
复制
package com.mybatis.generator;

import java.io.InputStream;
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;

/**
 * 
 * 
 * @ClassName: Generator
 * 
 * @Description: 读取 MBG 配置生成代码
 * 
 * @author: Mr.Yang
 * 
 * @date: 2018年4月27日 下午4:31:42
 */
public class Generator {

    public static void main(String[] args) throws Exception {
        // MBG 执行过程中的警告信息
        List warnings = new ArrayList();
        // 当生成的代码重复时,覆盖原代码
        boolean overwrite = true;
        // 读取MBG配置文件
        InputStream is = Generator.class.getResourceAsStream("/generator/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(is);
        is.close();

        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        // 创建 MBG
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        // 执行生成代码
        myBatisGenerator.generate(null);
        // 输出警告信息
        for (String warning : warnings) {
            System.out.println(warning);
        }
    }

}

使用Java编码方式运行的好处是,generatorConfig.xml配置的一些特殊的类(比如commentGenerator标签中type属性配置的MyCommentGenerator)只要在当前项目中,或者在当前项目的Classpath中,就可以直接使用。 使用其他方式的时候都需要特别配置才能在MBG执行过程中找到MyCommentGenerator类并实例化,否则会抛出异常。

不便之处在于,它和当前项目是绑定在一起的, 唉maven多子模块的情况下,可能需要增加代码量和配置量,配置多个,管理不方便。

但是总和来说,这种方式出现的问题最少,配置最为容易,因此推荐使用。

运行后生成的代码如下结构

大致用法,总结完毕

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/04/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 参考配置实例
  • 运行 MyBatis Generator
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档