经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MyBatis » 查看文章
MyBatis?Generator?ORM层面的代码自动生成器(推荐)
来源:jb51  时间:2023/2/1 9:35:55  对本文有异议

在日常开发工作中,我们往往需要自己去构建各种数据表所对应的持久化对象(POJO)、用于操作数据库的接口(DAO)以及跟 DAO 所绑定的对应 XML。这都是一些重复性的操作,不需要多大技术含量。MyBatis Generator工具,能够帮助我们去自动生成这些文件。

MyBatis Generator 简介

作为一个基于 MyBatis 的独立工具,MyBatis Generator 能够满足我们以上的要求,能够通过简单的配置去帮我们生成数据表所对应的 POJO、DAO、XML 等文件,减去我们手动去生成这些文件的时间,有效提高开发效率。MyBatis Generator 运行方式多样,主要可以通过以下几种方式来运行:

  • 命令行
  • Ant
  • Maven
  • Java
  • IDE

Mybatis Generator简称 MBG,是一个专门为 MyBatis和 ibatis框架使用者提供的代码生成器。也可以快速的根据数据表生成对应的pojo类、Mapper接口、Mapper文件,甚至生成QBC风格的查询对象。

MyBatis Generator的使用

使用 MyBatis Generator,需要在项目中配置了数据库和 MyBatis 的相关依赖。

引入插件

  1. <dependency>
  2. <groupId>mysql</groupId>
  3. <artifactId>mysql-connector-java</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.mybatis.spring.boot</groupId>
  7. <artifactId>mybatis-spring-boot-starter</artifactId>
  8. </dependency>
  9. <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
  10. <dependency>
  11. <groupId>org.slf4j</groupId>
  12. <artifactId>slf4j-api</artifactId>
  13. <version>1.7.25</version>
  14. </dependency>
  15. <!-- mybatis-generator -->
  16. <dependency>
  17. <groupId>org.mybatis.generator</groupId>
  18. <artifactId>mybatis-generator-core</artifactId>
  19. <version>1.3.7</version>
  20. </dependency>

配置生成器文件

  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. <!--targetRuntime="MyBatis3"-->
  7. <context id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple">
  8. <!-- 生成的Java文件的编码 -->
  9. <property name="javaFileEncoding" value="UTF-8" />
  10. <!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
  11. <property name="beginningDelimiter" value="`" />
  12. <property name="endingDelimiter" value="`" />
  13.  
  14. <!-- 注释生成器 -->
  15. <commentGenerator>
  16. <property name="suppressDate" value="true" />
  17. <property name="suppressAllComments" value="true" />
  18. </commentGenerator>
  19.  
  20. <!-- 必须要有的,使用这个配置链接数据库 @TODO:是否可以扩展 -->
  21. <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  22. connectionURL="jdbc:mysql://localhost:3306/mybatis"
  23. userId="root"
  24. password="1111">
  25. </jdbcConnection>
  26.  
  27. <!-- 生成domain对象 -->
  28. <javaModelGenerator targetPackage="com.sunny.domain" targetProject="mybatis-11_MBG/src/main/java">
  29. <property name="enableSubPackages" value="true" />
  30. </javaModelGenerator>
  31.  
  32. <!-- 生成Mapper文件 -->
  33. <sqlMapGenerator targetPackage="com.sunny.mapper" targetProject="mybatis-11_MBG/\src\main\resources">
  34. <property name="enableSubPackages" value="true" />
  35. </sqlMapGenerator>
  36.  
  37. <!-- 生成Mapper接口 -->
  38. <javaClientGenerator targetPackage="com.sunny.mapper" type="XMLMAPPER"
  39. targetProject="mybatis-11_MBG/src/main/java">
  40. <property name="enableSubPackages" value="true" />
  41. </javaClientGenerator>
  42.  
  43.  
  44. <!-- Table To POJO -->
  45. <!--domainObjectName="User"-->
  46. <table tableName="user2" delimitIdentifiers="true">
  47. <property name="useActualColumnNames" value="true" />
  48. <generatedKey column="id" sqlStatement="JDBC" />
  49. </table>
  50. </context>
  51. </generatorConfiguration>

配置文件极为重要,对应数据库表生成POJO对象的映射关系由配置文件完成。

运行配置文件

在这里插入图片描述

Java代码运行:

  1. public class Generator {
  2. public static void main(String[] args) throws Exception {
  3. //MBG执行过程中的警告信息
  4. List<String> warnings = new ArrayList<String>();
  5. //生成代码重复时,是否覆盖源代码
  6. boolean override = false;
  7. InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("generatorConfig.xml");
  8. ConfigurationParser cp = new ConfigurationParser(warnings);
  9. Configuration config = cp.parseConfiguration(in);
  10.  
  11. DefaultShellCallback callback = new DefaultShellCallback(override);
  12. //创建MBG
  13. MyBatisGenerator mbg = new MyBatisGenerator(config, callback, warnings);
  14. mbg.generate(null);
  15. //输出警告信息
  16. for (String warn : warnings) {
  17. System.out.println(warn);
  18. }
  19. }
  20. }

通过Maven插件运行:

如果使用Maven插件,那么不需要引入mybatis-generator-core依赖,只需要引入一个Maven的插件mybatis-generator-maven-plugin

  1. <plugins>
  2. <plugin>
  3. <groupId>org.mybatis.generator</groupId>
  4. <artifactId>mybatis-generator-maven-plugin</artifactId>
  5. <version>1.4.0</version>
  6. <executions>
  7. <execution>
  8. <id>Generate MyBatis Artifacts</id>
  9. <goals>
  10. <goal>generate</goal>
  11. </goals>
  12. </execution>
  13. </executions>
  14. <configuration>
  15. <!-- 输出详细信息 -->
  16. <verbose>true</verbose>
  17. <!-- 覆盖生成文件 -->
  18. <overwrite>true</overwrite>
  19. <!-- 定义配置文件 -->
  20. <configurationFile>${basedir}/src/main/resources/generator-configuration.xml</configurationFile>
  21. </configuration>
  22. </plugin>
  23. </plugins>

通过mvn mybatis-generator:generate运行,或者IDE一键运行。

参考文献:

Mybatis代码生成器Mybatis-Generator使用详解感谢作者!

MyBatis Generator 超详细配置感谢作者!

到此这篇关于MyBatis Generator ORM层面的代码自动生成器的文章就介绍到这了,更多相关MyBatis Generator 代码自动生成器内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号