写点什么

MyBatis 逆向工程 Generator 和 IDE Plugin

  • 2021 年 11 月 11 日
  • 本文字数:2199 字

    阅读完需:约 7 分钟

===================================================================


mybatis 逆向工程的作用是根据数据库里的表结构自动生成实体类,映射文件,和接口。


和 hibernate 的自动建表相反。


逆向工程需要的 jar 包:


  1. mybatis-3.2.3.jar

  2. mybatis-generator-core-1.3.2.jar

  3. mysql-connector-java-8.0.27-bin.jar

  4. log4j-1.2.17.jar


如果是 Maven 项目可以在 pom 文件中导入依赖:


<dependency>


<groupId>org.mybatis</groupId>


<artifactId>mybatis</artifactId>


<version>3.5.7</version>


</dependency>


<dependency>


<groupId>org.mybatis.generator</groupId>


<artifactId>mybatis-generator-core</artifactId>


<version>1.4.0</version>


</dependency>


<dependency>


<groupId>mysql</groupId>


<artifactId>mysql-connector-java</artifactId>


<version>8.0.27</version>


</dependency>


<dependency>


<groupId>log4j</groupId>


<artifactId>log4j</artifactId>


<version>1.2.17</version>


</dependency>


配置 log4j


log4j.properties


log4j.rootLogger=DEBUG, Console


#Console


log4j.appender.Console=org.apache.log4j.ConsoleAppender


log4j.appender.Console.layout=org.apache.log4j.PatternLayout


log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n


log4j.logger.java.sql.ResultSet=INFO


log4j.logger.org.apache=INFO


log4j.logger.java.sql.Connection=DEBUG


log4j.logger.java.sql.Statement=DEBUG


log4j.logger.java.sql.PreparedStatement=DEBUG


另外加上一个启动类 GeneratorSqlmap 和一个稍微改动的配置文件 -generatorConfig,xml 文件


使用 Generator 生成代码



GeneratorSqlmap 启动类



java 代码是通用的,只要修改你的配置文件的路径即可:


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();


}


}


}

配置文件 generatorConfig

MySQL8.0 以上版本需要在"generatorConfig.xml"中的 jdbcConnectio 标签中添加以下代码:


<property name="nullCatalogMeansCurrent" value="true"/>


否则会遇到此问题


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>


<property name="suppressAllComments" value="true"/>


</commentGenerator>


<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"


connectionURL="jdbc:mysql://localhost:3306/demo1?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"


userId="root"


password="root">


</jdbcConnection>


<!-- 默认 false,把 JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true 时把 JDBC DECIMAL 和


NUMERIC 类型解析为 java.math.BigDecimal -->


<javaTypeResolver>


<property name="forceBigDecimals" value="false"/>


</javaTypeResolver>


<javaModelGenerator targetPackage="com.demo.pojo"


targetProject=".\src">


<property name="enableSubPackages" value="false"/>


<property name="tri


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


mStrings" value="true"/>


</javaModelGenerator>


<sqlMapGenerator targetPackage="com.demo.mapper"


targetProject=".\src">


<property name="enableSubPackages" value="false"/>


</sqlMapGenerator>


<javaClientGenerator type="XMLMAPPER"


targetPackage="com.demo.mapper"


targetProject=".\src">


<property name="enableSubPackages" value="false"/>


</javaClientGenerator>


<table schema="" tableName="mysql"></table>


</context>


</generatorConfiguration>


需要改动的地方有:


| <jdbcConnection> | 自定义数据库名,用户名和密码 |


| --- | --- |


| <javaModelGenerator> | 实体类路径。没有会新建 |


| <sqlMapGenerator > | 映射文件的路径 |


| <javaClientGenerator > | 接口的路径 |


| <table> | 需要映射的数据库的表名 |


注意:映射文件一般与接口的路径一致


数据据表:



运行效果:



项目结构:



实体类:



接口:



映射文件:


这个就有点多,足足快200多行了



插件启动 maven-generator




如果使用 maven 项目就可以省去编写 Java 启动类,使用 maven 插件和配置文件.xml 即可


在 pow 中加上如下代码来添加插件:


<plugin>


<groupId>org.mybatis.generator</groupId>


<artifactId>mybatis-generator-maven-plugin</artifactId>


<version>1.3.2</version>


<configuration>

评论

发布
暂无评论
MyBatis逆向工程Generator和IDE Plugin