一、最终的效果
上图中dao层、pojo层以及mapper等文件都是通过逆向工程来获得的。
二、 为什么要使用逆向工程
总的来说,就一个原因就是创建po更方便,并且实现了接口和mapper的一次性生成。
在使用逆向工程之前,我们生成数据库表的实体类的时候都是采用手动创建的方式,那么这个带来了一个问题?如果我的数据库中表的数量较少只有那么几个,此时即便没有使用逆向工程创建实体类也是比较快速的,但是一旦我的表的数量较多的时候那单纯使用手动创建就显得笨重的了,况且如果使用mybatis来操作数据库的话,还要创建多个接口和mapper文件。这样一来就这种生成实体类没有一点技术含量的东西就会花费我们较长的时间。
那么为了解决上面这种由于表数量较多带来的创建po耗时的情况,逆向工程就可出现了。这时候你只需要在项目中添加对它的依赖和先关插件上面提及到的所有问题、各种文件一并给你生成了。不管你的表数量有多少都是一键生成。
三、如何在工程中使用逆向工程
1. 前期准备
首先你要在idea中创建一个Maven项目,然后在pom.xml文件中添加对逆向工程的相关依赖。
<!--这里要说明的是,数据源使用的alibaba,数据库使用的是mysql。如果是其他数据源和数据库的话只需要更改一下即可-->
<!--mysqld的依赖-->
<dependecies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
</dependecies>
<!--generator的插件,这里不知道为啥还要引用一下mysql的依赖,否则就会报错-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
</dependencies>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
2. 创建generatorConfig.xml文件
在Maven工程的resources文件夹中创建一个generatorConfig.xml文件,用来指定链接的数据库信息和生成的接口和mappe文件的存储位置。
这个xml文件是通用的,只需要将链接数据库的信息换成自己的,并且要指定生成的接口和mapper的路径信息(这个路径信息的话即便么有指定也不会报错,只要前面数据库链接的信息是你自己的就可以,它会按照我的配置自动给你创建一个路径出来)。
修改位置1–这里要换成你自己的数据库连接信息(必做)
修改位置2—修改生成的实体类的位置(可忽略)
修改位置3–修改生成mapper.xml文件的位置(可忽略)
修改位置4 --修改生成的接口位置(mapper代理开发中的接口—可忽略)
修改位置5—你要把那些表生成pojo----可以一次性指定多张表。
下面是完整的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>
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 修改第一处 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/ddshop?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"
userId="root"
password="liguosheng_199609130">
</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.javacto.pojo"
targetProject=".\src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 修改第三处-->
<sqlMapGenerator targetPackage="com.javacto.dao"
targetProject=".\src\main\resources">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.javacto.dao"
targetProject=".\src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!-- 指定数据库表 修改第四步-->
<!-- <table tableName="items"></table>
<table tableName="orders"></table>
<table tableName="orderdetail"></table> -->
<table tableName="table01"></table>
<table tableName="table02"></table>
.
.
.
<table tableName="table n"></table>
</context>
</generatorConfiguration>
3. 运行逆向工程,生成相关文件
首先,点击Edit Configuration----由于我之前已经添加好了,因此这里已经存储M generator了
然后点击左上角的 + 添加Maven (Run方式),并编辑相关信息
最后直接点击运行就行了。
上面这两个地方选择哪种运行方式都行,之后就在你在generatorConfig.xml文件中配置的位置生成了指定的信息。