Java后台开发之Mybatis逆向工程
未命名前言
为什么要学逆向工程,这是我之前觉得非常没必要学的,自己能够写相关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=".\src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.demon.dao"
targetProject=".\src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.demon.dao"
targetProject=".\src\main\java">
<!-- 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:\\JavaProjects\\reverseproject\\src\\main\\resources\\SqlMapConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback, warnings);