Mybatis逆向工程

一、.归纳总结逆向工程相关概念及经验
(1)什么是MyBatis逆向工程
逆向工程(Reverse Engineering)是一种从现有系统、产品或设备中提取知识、技术或设计信息,然后利用这些信息来创建新的或改进现有系统的过程。在软件开发领域,逆向工程通常指的是从已有的代码、数据库或系统架构中推导出源代码、设计文档或其他形式的知识。
(2)逆向工程与正向工程的区别
正向工程(Forward Engineering)是指根据设计文档、规格说明或其他高层次的描述来创建系统或产品的过程。它通常是从抽象到具体的实现过程。而逆向工程则正好相反,它是从已有的具体实现(如数据库表结构、二进制代码等)中推导出高层次的信息。
(3)逆向工程在软件开发中的作用
代码理解与维护:当面对遗留系统或复杂的代码库时,逆向工程可以帮助开发者理解代码的结构和功能,从而更容易地进行维护和修改。
数据库模型生成:从现有的数据库表结构中生成对象关系映射(ORM)模型或数据访问层代码,减少手动编写数据访问代码的工作量。
系统重构:在重构现有系统时,逆向工程可以作为初始步骤,从现有系统提取设计元素,然后根据新的需求进行重构。
自动生成测试用例:通过分析现有代码或数据库结构,逆向工程可以自动生成测试用例,提高测试覆盖率。
文档生成:逆向工程可以从代码中生成文档,如API文档、系统架构图等,帮助团队成员更好地理解和使用系统。
(4)逆向工程在MyBatis中的应用
在MyBatis框架中,逆向工程指的是根据数据库表结构自动生成对应的实体类(Entity)、映射文件(Mapper)以及数据访问对象(DAO)等代码。通过MyBatis Generator工具,开发者可以快速地生成这些基础代码,从而专注于业务逻辑的实现,提高开发效率。
MyBatis的逆向工程功能大大简化了数据库与Java对象之间的映射过程,减少了手动编写SQL语句和映射配置的工作量。同时,生成的代码结构清晰,易于维护和扩展,有助于提高代码质量和开发效率。
(5)原理:
① 数据库元数据提取:首先,MyBatis逆向工程工具会连接到指定的数据库,通过JDBC(Java Database Connectivity)获取数据库的元数据(Metadata)。元数据描述了数据库的结构,包括表、列、关系等信息。
② 代码生成策略:在获取到数据库的元数据后,MyBatis逆向工程工具会根据预定义
的代码生成策略来生成代码。这些策略通常可以在配置文件中进行配置,包括生成的目标位置、包名、命名规则等。
③ 模板引擎:MyBatis逆向工程工具使用模板引擎来生成代码。模板引擎是一种通用的代码生成器,它根据预定义的模板和提取到的元数据来生成代码。模板通常包含一些占位符,这些占位符在生成代码时会被实际的元数据值所替换。
④ 代码生成:根据代码生成策略和模板引擎,MyBatis逆向工程工具会生成对应的实体类、映射文件和数据访问对象等代码。
2、2.写出完成逆向工程的实现过程
(1)创建项目generator
(2)添加插件依赖:

<plugins>
    <!--mybatis-generator的Maven插件-->
    <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.5</version>
        <configuration>
            <configurationFile>
                src/main/resources//generator/generatorConfig.xml</configurationFile>
            <verbose>true</verbose>
            <overwrite>true</overwrite>
        </configuration>
        <!-- 插件需要的依赖环境 -->

    </plugin>
</plugins>

导入依赖:

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.1</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>RELEASE</version>
        <scope>compile</scope>
    </dependency>
      <dependency>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-core</artifactId>
          <version>1.3.7</version>
      </dependency>
</dependencies>

(3)在 src/main/resources 路径下创建创建generator文件夹,并在该文件夹下创建 generatorConfig.xml 文件

在这里插入图片描述
(4)根据指定的数据库表生成对应的实体类、映射文件和Dao接口
在这里插入图片描述

<?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="D:\WdGame\mysql-connector-j-8.3.0.jar"/>

    <!-- 此处ID和数据库连接处名称一致 -->
    <context id="ssm" targetRuntime="mybatis3">
        <commentGenerator>
            <property name="suppressDate" value="true" />
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <jdbcConnection
                driverClass="com.mysql.cj.jdbc.Driver"
                connectionURL="jdbc:mysql:///ssm?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=GMT%2B8&amp;useSSL=false"
                userId="root"
                password="root123456">
        </jdbcConnection>

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

        <javaModelGenerator     targetPackage="com.dlxy.pojo"
                                targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="com.dlxy.mapper"
                         targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.dlxy.dao"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <table tableName="product" domainObjectName="Product"
               enableCountByExample="true"
               enableUpdateByExample="true"
               enableDeleteByExample="true"
               enableSelectByExample="true"
               selectByExampleQueryId="true">

        </table>

    </context>
</generatorConfiguration>

数据库表:
在这里插入图片描述
(5)创建相应的包:
在这里插入图片描述

(6)右侧Maven处 Plugins -> mybatis-generator -> mybatis-generator:generate

在这里插入图片描述

实体类、dao层、以及映射文件被添加了数据:
在这里插入图片描述
MyBatis逆向工程是指使用MyBatis Generator(MBG)等工具,根据数据库表结构自动生成MyBatis框架所需的Java代码和映射文件的过程。逆向工程可以提高开发效率,通过自动生成代码,避免了手动编写实体类、映射文件和DAO接口的重复性工作,大大缩短了项目开发周期。并且能够减少出错概率。手动编写代码时容易出错,特别是在处理复杂的数据库表结构时。逆向工程自动生成的代码可以减少拼写错误和逻辑错误。逆向工程还可以快速适应数据库变更:当数据库表结构发生变化时,通过重新运行逆向工程,可以快速生成新的实体类和映射文件,使代码与数据库保持同步。

  • 25
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值