您的位置:首页 > 其它

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

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

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

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

命令行生成

首先网上下载好的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接口类的包名(自定
4000
义即可)"  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目录中



到此两种生成方法介绍完毕,有什么问题欢迎大家留言讨论
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: