学习过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接口类的包名(自定义即可)" 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目录中
到此两种生成方法介绍完毕,有什么问题欢迎大家留言讨论