Mybatis之Generator逆向生成的两种方法

学习过Mybatis的应该都知道他的特点就是半自动化,同时也意味着SQL语句的灵活和手动。通过程序员对SQL语句的优化可以让程序呈现不同的运行效果,因此在这个过程中需要手写大量的SQL语句以及数据库的POJO类。于是诞生了Generator,减轻了程序员的部分负担,同时也避免了编写SQL出现手误的现象

generator可以在Mybatis官网下载网速可能较慢,也可以在我的GitHub下载

下面是目前常用的两种Generator生成方法

  1. 命令行生成
    首先网上下载好的generator目录结构如下

这里写图片描述
接下来我们打开lib包会看到如下目录结构
这里写图片描述
我们需要做的就是打开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="数据库驱动包的路径" />
  <context id="MySQL" targetRuntime="MyBatis3">
    <!--下面配置的是数据库连接信息 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://127.0.0.1/ssm"
        userId="root"
        password="1234">
    </jdbcConnection>

    <javaModelGenerator targetPackage="POJO类的包名(自定义即可)" targetProject="生成该包的目标路径">
      <property name="enableSubPackages" value="false" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="mapper接口类的包名(自定义即可)"  targetProject="生成该包的目标路径">
      <property name="enableSubPackages" value="false" />
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER" targetPackage="mapper.xml配置文件的包名(自定义即可)"  targetProject="生成该包的目标路径">
      <property name="enableSubPackages" value="false" />
    </javaClientGenerator>

   <table tableName="数据库中的表名1" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">  
    </table>  
    <table tableName="数据库中的表名2" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">  
    </table>  
  </context>
</generatorConfiguration>

另外要注意,上面所配置的数据库驱动以及包的生成位置均要为绝对路径
至此,配置文件修改完成,下载打开命令行,进入当前lib包所在的路径,打开lib文件中的 生成语句.txt 文件,命令为

java -jar mybatis.jar -configfile generatorConfig.xml -overwrite

回车运行成功后,命令行信息如下
这里写图片描述
现在,到你刚刚配置的包生成路径中,就会看见已经生成好的包
这里写图片描述

2.IDEA内生成
这种方式生成的更为直观,只需要在IDEA中运行JAVA程序即可
首先打开我们的IDEA(以Ecplise为例),最好单独创建一个java工程,不要和你的项目放在一起。
这里写图片描述
新建好一个项目后,拖入generator文件中的配置文件以及jar包,如图所示这里写图片描述
接下来还是和第一个方法一样,配置generatorConfig.xml,不过生成包的路径有点不同,我们要生成在这个项目的src中,代码如下

<?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="数据库驱动包的路径" />
  <context id="MySQL" targetRuntime="MyBatis3">
    <!--下面配置的是数据库连接信息 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://127.0.0.1/ssm"
        userId="root"
        password="1234">
    </jdbcConnection>

    <javaModelGenerator targetPackage="POJO类的包名(自定义即可)" targetProject=".\src">
      <property name="enableSubPackages" value="false" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="mapper接口类的包名(自定义即可)"  targetProject=".\src">
      <property name="enableSubPackages" value="false" />
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER" targetPackage="mapper.xml配置文件的包名(自定义即可)"  targetProject=".\src">
      <property name="enableSubPackages" value="false" />
    </javaClientGenerator>

   <table tableName="数据库中的表名1" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">  
    </table>  
    <table tableName="数据库中的表名2" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">  
    </table>  
  </context>
</generatorConfiguration>

可以看到,我们只要把生成目录改为.\src即可生成在当前项目的src目录下。接下来创建一个名为GeneratorSqlmap.java的java程序,代码如下

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;

public class GeneratorSqlmap {

    public void generator() 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);

    } 
    public static void main(String[] args) throws Exception {
        try {
            GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

这里唯一需要修改的就是File里的逆向工程配置文件在项目中的位置,接下来运行该程序,没有出错的话,刷新当前项目,会发现生成的包出现在src目录中
这里写图片描述

到此两种生成方法介绍完毕,有什么问题欢迎大家留言讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MaybeRichard

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值