当前位置:   article > 正文

java-mybatis逆向工程生成实体类接口_java逆向工程

java逆向工程

前言

在Java应用程序中,与数据库的交互通常需要编写大量的数据库访问代码和SQL语句。MyBatis逆向工程是一个强大的工具,它可以自动化生成Java代码和映射文件,从而大大简化了数据库访问层的开发。在本篇博客中,我们将深入探讨MyBatis逆向工程的用法和优点。

一、什么是MyBatis逆向工程

MyBatis逆向工程是MyBatis框架的一部分,它提供了一种自动化生成Java代码和XML映射文件的方式,从已有的数据库表中。逆向工程可以分析数据库表的结构,然后生成与表对应的Java实体类和MyBatis映射文件(通常是XML文件)。这样,开发者就不必手动编写Java实体类和XML映射文件,从而减少了重复劳动和错误的可能性

二、优点

MyBatis逆向工程的优点

使用MyBatis逆向工程有许多优点,其中一些包括:

  1. 提高开发效率: MyBatis逆向工程可以自动生成大部分与数据库交互的代码,极大地减少了手动编写和维护的工作量,从而提高了开发效率。

  2. 保持一致性: 自动生成的代码和映射文件与数据库表的结构一致,确保了数据模型和数据库表的同步,减少了错误的可能性。

  3. 可维护性: 自动生成的代码易于维护,因为它们遵循了一致的命名和结构,使得团队成员更容易理解和修改代码。

  4. 避免SQL编写: 开发者不必手动编写SQL语句,因为逆向工程已经生成了查询、插入、更新和删除等常见操作的SQL。

  5. 支持多种数据库: MyBatis逆向工程支持多种数据库,包括MySQL、Oracle、SQL Server等,因此适用于各种数据库项目。

使用MyBatis逆向工程

下面是使用MyBatis逆向工程的基本步骤:

导入对应的依赖包

  1. <plugins>
  2. <!--mybatis逆向工程工具-->
  3. <plugin>
  4. <groupId>org.mybatis.generator</groupId>
  5. <artifactId>mybatis-generator-maven-plugin</artifactId>
  6. <version>1.3.2</version>
  7. <configuration>
  8. <!--mybatis逆向工程配置文件-->
  9. <configurationFile>src/main/resources/GeneratorConfig.xml</configurationFile>
  10. <verbose>true</verbose>
  11. <overwrite>true</overwrite>
  12. </configuration>
  13. </plugin>
  14. </plugins>

 创建对应的xml文件

1、首先要注意,xml一定要跟依赖包绑定的路径一直。

2、再去创建对应的配置文件“GeneratorConfig.xml” 

 配置这个文件GeneratorConfig.xml

1、以下是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. <classPathEntry location="E:\apache-maven-3.6.1\apache-maven-3.6.1\maven-repo\mysql\mysql-connector-java\8.0.12\mysql-connector-java-8.0.12.jar"/>
  8. <context id="DB2Tables" targetRuntime="MyBatis3">
  9. <!-- JavaBean 实现 序列化 接口 -->
  10. <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
  11. <!-- 生成toString -->
  12. <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
  13. <!-- optional,旨在创建class时,对注释进行控制 -->
  14. <commentGenerator>
  15. <property name="suppressDate" value="true"/>
  16. <!-- <property name="suppressAllComments" value="true"/>-->
  17. </commentGenerator>
  18. <!--数据库链接URL,用户名、密码 -->
  19. <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
  20. connectionURL="jdbc:mysql://d-mysql.dmsd.tech/ar_dev"
  21. userId="111"
  22. password="111">
  23. </jdbcConnection>
  24. <!-- 类型转换 -->
  25. <javaTypeResolver >
  26. <!-- 是否使用bigDecimal,
  27. false: 把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer(默认)
  28. true: 把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal
  29. -->
  30. <property name="forceBigDecimals" value="false" />
  31. </javaTypeResolver>
  32. <!-- 生成模型的包名和位置-->
  33. <javaModelGenerator targetPackage="com.heqiang.springboot_user.pojo" targetProject="src/main/java">
  34. <!-- 默认false 是否允许子包 -->
  35. <property name="enableSubPackages" value="true" />
  36. <!-- 默认false 是否对model添加 构造函数 -->
  37. <property name="constructorBased" value="false"/>
  38. <!-- 默认false 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 -->
  39. <property name="immutable" value="false"/>
  40. <!-- 默认false 是否对类CHAR类型的列的数据进行trim操作 -->
  41. <property name="trimStrings" value="true" />
  42. </javaModelGenerator>
  43. <!-- 生成映射文件的包名和位置-->
  44. <sqlMapGenerator targetPackage="Mapper" targetProject="src/main/resources">
  45. <property name="enableSubPackages" value="true"/>
  46. </sqlMapGenerator>
  47. <!-- 生成DAO的包名和位置-->
  48. <javaClientGenerator type="XMLMAPPER" targetPackage="com.heqiang.springboot_user.dao" targetProject="src/main/java">
  49. <property name="enableSubPackages" value="true"/>
  50. </javaClientGenerator>
  51. <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
  52. <!-- <table tableName="risk_model_order" domainObjectName="DSRiskModelOrder" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
  53. <table tableName="tel_bill_record" domainObjectName="DSTelBillRecord" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
  54. <table tableName="ar_activity_url" domainObjectName="aractivityurl">
  55. <property name="userActualColumnNames" value="false"/>
  56. </table>
  57. </context>
  58. </generatorConfiguration>

GeneratorConfig.xml文件.需要更改的地方

1、需要找到自己本地的mysql.jar,进行更换

 2、需要更改自己本地数据库进行更改

3、实体层生产的位置,也需要自己去更改

4、放置自己数据库的表

以上配置完以后,就需要去生成实体层了 

三、缺点

MyBatis逆向工程(Reverse Engineering)是一个用于生成数据访问层代码的工具,它可以根据数据库表的结构自动生成相应的Java代码,包括实体类、Mapper接口和SQL映射文件。尽管MyBatis逆向工程具有一些优点,如提高开发效率和减少手动编写重复代码的工作量,但也存在一些缺点和注意事项,如下所示:

  1. 生成的代码质量不高:逆向工程生成的代码通常是基于数据库表结构的,可能不够符合项目的架构和设计要求。这可能导致生成的代码需要进一步调整和优化,以满足项目的需求,增加了额外的工作量。

  2. 不适用于复杂查询:逆向工程主要用于生成基本的CRUD(创建、读取、更新、删除)操作,对于复杂的数据库查询和连接操作,生成的代码可能无法满足需求,需要手动编写自定义SQL。

  3. 维护困难:当数据库结构发生变化时,需要重新运行逆向工程来更新生成的代码。这可能导致代码覆盖现有的自定义修改,需要谨慎处理。

  4. 不支持所有数据库特性:逆向工程工具可能不支持某些高级数据库特性或存储过程,这些特性需要手动添加到生成的代码中。

  5. 生成的代码可能冗长:生成的代码可能包含大量的样板代码,使得代码文件变得冗长,不易阅读和维护。这也可能导致生成的代码不符合项目的编码规范。

  6. 对数据库依赖性强:逆向工程生成的代码与特定的数据库紧密相关,如果项目需要切换到不同的数据库,可能需要进行大量的修改。

  7. 性能问题:生成的SQL语句可能不是最优化的,需要进一步优化以提高性能。

  8. 缺乏灵活性:逆向工程通常不提供灵活性,无法轻松地自定义生成的代码,需要手动修改。

  9. 学习曲线:使用逆向工程工具需要学习工具的配置和使用方式,对于初学者来说可能存在一定的学习曲线。

综上所述,虽然MyBatis逆向工程可以提高开发效率,但它并不是适用于所有项目和场景的银弹。在使用逆向工程工具时,开发人员需要谨慎考虑其优点和缺点,并在项目中做出明智的决策,以确保生成的代码符合项目需求并能够维护和扩展。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/90720
推荐阅读
相关标签
  

闽ICP备14008679号