未命名前言
为什么要学逆向工程,这是我之前觉得非常没必要学的,自己能够写相关mysql语句,能够写对应接口,为啥还要学习这个。但是自从我接触了一个大项目开始,改变了这个想法,数据库庞大,涉及的表非常多的情况下,逆向工程简直太棒了。只要搭建好逆向工程,只需要点击运行,就可以把数据库里面的所有表自动生成接口、映射文件和对象(俗称pojo)。目前,所有接口只支持单表操作,但也是非常不错了,极大的提高了效率。
什么是逆向工程
简单的理解,Mybatis逆向工程,就是通过官方插件,自动生成Mybatis数据库连接的一些文件。Mybatis需要编写sql语句,Mybatis官方提供逆向工程,可以针对单表自动生成Mybatis执行所需要的代码(mapper.java、mapper.xml、pojo…),提高工作效率。
如何搭建逆向工程
在本文中,涉及到逆向工程的相关描述比较少,步骤也相对较简单,所以会有大量的截图和代码展示,方便复制粘贴。
- 首先准备数据库
搭建数据库,数据库名、表名和字段名自拟。参考如下:
2. 通过Maven搭建逆向工程
这里采用Maven工程,原因是比较方便,不用下载相应的jar包,只需通过在pom.xml文件中引用的形式添加即可。
第一步:创建Maven工程
第二步:在pom.xml文件中,添加Mybatis逆向工程生成器的jar包和数据库连接工具的jar包。
<!-- 逆向工程生成器 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<!-- MySql 连接-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
第三步:在工程目录的resources资源目录下创建配置文件,名字自拟。并修改文件为如下内容,参照注释自行修改相关配置。
<?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>
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test?serverTimezone=UTC" userId="root"
password="5201314">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.demon.pojo"
targetProject=".srcmainjava">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.demon.dao"
targetProject=".srcmainjava">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.demon.dao"
targetProject=".srcmainjava">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!-- 指定数据库表 -->
<table schema="" tableName="teacher"/>
<table schema="" tableName="student"/>
<!-- 有些表的字段需要指定java类型
<table schema="" tableName="">
<columnOverride column="" javaType="" />
</table> -->
</context>
</generatorConfiguration>
第四步:创建执行脚本Main.java,注意File访问路径为配置文件全路径。
public static void main(String[] args){
try {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
//指定 逆向工程配置文件
File configFile = new File("D:JavaProjectsreverseprojectsrcmainresourcesSqlMapConfig.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);
}
catch (Exception e){
e.printStackTrace();
}
}
第五步:执行脚本Main.java,会自动生成映射文件、接口文件和pojo等,参考工程目录如下:
注:为了方便后期使用,建议把Mapper接口目录和Mapper.xml映射文件生成到相同目录下。
未完待续内容
上面是关于逆向工程搭建的全部内容,实际上也非常简单,相关配置的版本请自行选择,但是我之前选择的mybatis-generator-core的jar包版本为1.4.0貌似有问题,改为1.3.7版本的就可以了,总的来说还是非常方便。除了上面内容,我还整理了关于逆向工程生成的接口使用方法,因为太多,我没有写出来,可以点击下面链接,进行查看。
Java后台开发Mybatis逆向工程实操 - 百度文库wenku.baidu.com
最后的最后
一句座右铭与大家共勉----------幸运成就一时,努力成就一世。