• 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的
  • 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:
    • Java实体类
    • Mapper接口
    • Mapper映射文件

创建逆向工程的步骤

添加依赖和插件

  1. <dependencies>
  2. <!-- MyBatis核心依赖包 -->
  3. <dependency>
  4. <groupId>org.mybatis</groupId>
  5. <artifactId>mybatis</artifactId>
  6. <version>3.5.9</version>
  7. </dependency>
  8. <!-- junit测试 -->
  9. <dependency>
  10. <groupId>junit</groupId>
  11. <artifactId>junit</artifactId>
  12. <version>4.13.2</version>
  13. <scope>test</scope>
  14. </dependency>
  15. <!-- MySQL驱动 -->
  16. <dependency>
  17. <groupId>mysql</groupId>
  18. <artifactId>mysql-connector-java</artifactId>
  19. <version>8.0.27</version>
  20. </dependency>
  21. <!-- log4j日志 -->
  22. <dependency>
  23. <groupId>log4j</groupId>
  24. <artifactId>log4j</artifactId>
  25. <version>1.2.17</version>
  26. </dependency>
  27. </dependencies>
  28. <!-- 控制Maven在构建过程中相关配置 -->
  29. <build>
  30. <!-- 构建过程中用到的插件 -->
  31. <plugins>
  32. <!-- 具体插件,逆向工程的操作是以构建过程中插件形式出现的 -->
  33. <plugin>
  34. <groupId>org.mybatis.generator</groupId>
  35. <artifactId>mybatis-generator-maven-plugin</artifactId>
  36. <version>1.3.0</version>
  37. <!-- 插件的依赖 -->
  38. <dependencies>
  39. <!-- 逆向工程的核心依赖 -->
  40. <dependency>
  41. <groupId>org.mybatis.generator</groupId>
  42. <artifactId>mybatis-generator-core</artifactId>
  43. <version>1.3.2</version>
  44. </dependency>
  45. <!-- 数据库连接池 -->
  46. <dependency>
  47. <groupId>com.mchange</groupId>
  48. <artifactId>c3p0</artifactId>
  49. <version>0.9.2</version>
  50. </dependency>
  51. <!-- MySQL驱动 -->
  52. <dependency>
  53. <groupId>mysql</groupId>
  54. <artifactId>mysql-connector-java</artifactId>
  55. <version>8.0.27</version>
  56. </dependency>
  57. </dependencies>
  58. </plugin>
  59. </plugins>
  60. </build>

创建MyBatis的核心配置文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <properties resource="jdbc.properties"/>
  7. <typeAliases>
  8. <package name=""/>
  9. </typeAliases>
  10. <environments default="development">
  11. <environment id="development">
  12. <transactionManager type="JDBC"/>
  13. <dataSource type="POOLED">
  14. <property name="driver" value="${jdbc.driver}"/>
  15. <property name="url" value="${jdbc.url}"/>
  16. <property name="username" value="${jdbc.username}"/>
  17. <property name="password" value="${jdbc.password}"/>
  18. </dataSource>
  19. </environment>
  20. </environments>
  21. <mappers>
  22. <package name=""/>
  23. </mappers>
  24. </configuration>

创建逆向工程的配置文件

  • 文件名必须是:generatorConfig.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE generatorConfiguration
  3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5. <generatorConfiguration>
  6. <!--
  7. targetRuntime: 执行生成的逆向工程的版本
  8. MyBatis3Simple: 生成基本的CRUD(清新简洁版)
  9. MyBatis3: 生成带条件的CRUD(奢华尊享版)
  10. -->
  11. <context id="DB2Tables" targetRuntime="MyBatis3Simple">
  12. <!-- 数据库的连接信息 -->
  13. <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
  14. connectionURL="jdbc:mysql://localhost:3306/mybatis"
  15. userId="root"
  16. password="123456">
  17. </jdbcConnection>
  18. <!-- javaBean的生成策略-->
  19. <javaModelGenerator targetPackage="com.atguigu.mybatis.pojo" targetProject=".\src\main\java">
  20. <property name="enableSubPackages" value="true" />
  21. <property name="trimStrings" value="true" />
  22. </javaModelGenerator>
  23. <!-- SQL映射文件的生成策略 -->
  24. <sqlMapGenerator targetPackage="com.atguigu.mybatis.mapper"
  25. targetProject=".\src\main\resources">
  26. <property name="enableSubPackages" value="true" />
  27. </sqlMapGenerator>
  28. <!-- Mapper接口的生成策略 -->
  29. <javaClientGenerator type="XMLMAPPER"
  30. targetPackage="com.atguigu.mybatis.mapper" targetProject=".\src\main\java">
  31. <property name="enableSubPackages" value="true" />
  32. </javaClientGenerator>
  33. <!-- 逆向分析的表 -->
  34. <!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName -->
  35. <!-- domainObjectName属性指定生成出来的实体类的类名 -->
  36. <table tableName="t_emp" domainObjectName="Emp"/>
  37. <table tableName="t_dept" domainObjectName="Dept"/>
  38. </context>
  39. </generatorConfiguration>

执行MBG插件的generate目标

  • 执行MBG插件的generate目标.png
  • 如果出现报错:Exception getting JDBC Driver,可能是pom.xml中,数据库驱动配置错误
    • dependency中的驱动dependency中的驱动.png
    • mybatis-generator-maven-plugin插件中的驱动插件中的驱动.png
    • 两者的驱动版本应该相同
  • 执行结果

逆向执行结果.png