赞
踩
在Java应用程序中,与数据库的交互通常需要编写大量的数据库访问代码和SQL语句。MyBatis逆向工程是一个强大的工具,它可以自动化生成Java代码和映射文件,从而大大简化了数据库访问层的开发。在本篇博客中,我们将深入探讨MyBatis逆向工程的用法和优点。
MyBatis逆向工程是MyBatis框架的一部分,它提供了一种自动化生成Java代码和XML映射文件的方式,从已有的数据库表中。逆向工程可以分析数据库表的结构,然后生成与表对应的Java实体类和MyBatis映射文件(通常是XML文件)。这样,开发者就不必手动编写Java实体类和XML映射文件,从而减少了重复劳动和错误的可能性
使用MyBatis逆向工程有许多优点,其中一些包括:
提高开发效率: MyBatis逆向工程可以自动生成大部分与数据库交互的代码,极大地减少了手动编写和维护的工作量,从而提高了开发效率。
保持一致性: 自动生成的代码和映射文件与数据库表的结构一致,确保了数据模型和数据库表的同步,减少了错误的可能性。
可维护性: 自动生成的代码易于维护,因为它们遵循了一致的命名和结构,使得团队成员更容易理解和修改代码。
避免SQL编写: 开发者不必手动编写SQL语句,因为逆向工程已经生成了查询、插入、更新和删除等常见操作的SQL。
支持多种数据库: MyBatis逆向工程支持多种数据库,包括MySQL、Oracle、SQL Server等,因此适用于各种数据库项目。
下面是使用MyBatis逆向工程的基本步骤:
导入对应的依赖包
- <plugins>
- <!--mybatis逆向工程工具-->
- <plugin>
- <groupId>org.mybatis.generator</groupId>
- <artifactId>mybatis-generator-maven-plugin</artifactId>
- <version>1.3.2</version>
- <configuration>
- <!--mybatis逆向工程配置文件-->
- <configurationFile>src/main/resources/GeneratorConfig.xml</configurationFile>
- <verbose>true</verbose>
- <overwrite>true</overwrite>
- </configuration>
- </plugin>
- </plugins>
创建对应的xml文件
1、首先要注意,xml一定要跟依赖包绑定的路径一直。
2、再去创建对应的配置文件“GeneratorConfig.xml”
配置这个文件GeneratorConfig.xml
1、以下是GeneratorConfig.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>
- <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
- <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"/>
- <context id="DB2Tables" targetRuntime="MyBatis3">
- <!-- JavaBean 实现 序列化 接口 -->
- <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
- <!-- 生成toString -->
- <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
- <!-- optional,旨在创建class时,对注释进行控制 -->
- <commentGenerator>
- <property name="suppressDate" value="true"/>
- <!-- <property name="suppressAllComments" value="true"/>-->
- </commentGenerator>
- <!--数据库链接URL,用户名、密码 -->
- <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
- connectionURL="jdbc:mysql://d-mysql.dmsd.tech/ar_dev"
- userId="111"
- password="111">
- </jdbcConnection>
- <!-- 类型转换 -->
- <javaTypeResolver >
- <!-- 是否使用bigDecimal,
- false: 把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer(默认)
- true: 把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal
- -->
- <property name="forceBigDecimals" value="false" />
- </javaTypeResolver>
- <!-- 生成模型的包名和位置-->
- <javaModelGenerator targetPackage="com.heqiang.springboot_user.pojo" targetProject="src/main/java">
- <!-- 默认false 是否允许子包 -->
- <property name="enableSubPackages" value="true" />
- <!-- 默认false 是否对model添加 构造函数 -->
- <property name="constructorBased" value="false"/>
- <!-- 默认false 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 -->
- <property name="immutable" value="false"/>
- <!-- 默认false 是否对类CHAR类型的列的数据进行trim操作 -->
- <property name="trimStrings" value="true" />
- </javaModelGenerator>
- <!-- 生成映射文件的包名和位置-->
- <sqlMapGenerator targetPackage="Mapper" targetProject="src/main/resources">
- <property name="enableSubPackages" value="true"/>
- </sqlMapGenerator>
- <!-- 生成DAO的包名和位置-->
- <javaClientGenerator type="XMLMAPPER" targetPackage="com.heqiang.springboot_user.dao" targetProject="src/main/java">
- <property name="enableSubPackages" value="true"/>
- </javaClientGenerator>
- <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
- <!-- <table tableName="risk_model_order" domainObjectName="DSRiskModelOrder" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
- <table tableName="tel_bill_record" domainObjectName="DSTelBillRecord" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
- <table tableName="ar_activity_url" domainObjectName="aractivityurl">
- <property name="userActualColumnNames" value="false"/>
- </table>
- </context>
- </generatorConfiguration>
GeneratorConfig.xml文件.需要更改的地方
1、需要找到自己本地的mysql.jar,进行更换
2、需要更改自己本地数据库进行更改
3、实体层生产的位置,也需要自己去更改
4、放置自己数据库的表
以上配置完以后,就需要去生成实体层了
MyBatis逆向工程(Reverse Engineering)是一个用于生成数据访问层代码的工具,它可以根据数据库表的结构自动生成相应的Java代码,包括实体类、Mapper接口和SQL映射文件。尽管MyBatis逆向工程具有一些优点,如提高开发效率和减少手动编写重复代码的工作量,但也存在一些缺点和注意事项,如下所示:
生成的代码质量不高:逆向工程生成的代码通常是基于数据库表结构的,可能不够符合项目的架构和设计要求。这可能导致生成的代码需要进一步调整和优化,以满足项目的需求,增加了额外的工作量。
不适用于复杂查询:逆向工程主要用于生成基本的CRUD(创建、读取、更新、删除)操作,对于复杂的数据库查询和连接操作,生成的代码可能无法满足需求,需要手动编写自定义SQL。
维护困难:当数据库结构发生变化时,需要重新运行逆向工程来更新生成的代码。这可能导致代码覆盖现有的自定义修改,需要谨慎处理。
不支持所有数据库特性:逆向工程工具可能不支持某些高级数据库特性或存储过程,这些特性需要手动添加到生成的代码中。
生成的代码可能冗长:生成的代码可能包含大量的样板代码,使得代码文件变得冗长,不易阅读和维护。这也可能导致生成的代码不符合项目的编码规范。
对数据库依赖性强:逆向工程生成的代码与特定的数据库紧密相关,如果项目需要切换到不同的数据库,可能需要进行大量的修改。
性能问题:生成的SQL语句可能不是最优化的,需要进一步优化以提高性能。
缺乏灵活性:逆向工程通常不提供灵活性,无法轻松地自定义生成的代码,需要手动修改。
学习曲线:使用逆向工程工具需要学习工具的配置和使用方式,对于初学者来说可能存在一定的学习曲线。
综上所述,虽然MyBatis逆向工程可以提高开发效率,但它并不是适用于所有项目和场景的银弹。在使用逆向工程工具时,开发人员需要谨慎考虑其优点和缺点,并在项目中做出明智的决策,以确保生成的代码符合项目需求并能够维护和扩展。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。