品优购商城项目(一)mybatis逆向工程

品优购商城项目(一):MyBatis逆向工程

在现代web开发中,数据库的使用是必不可少的一部分。而对于Java程序员来说,MyBatis是一个使用广泛的持久层框架。在使用MyBatis的过程中,我们可以手动编写SQL语句和映射文件,但是这样会带来很多的繁琐和重复的工作。

为了避免重复工作,MyBatis提供了逆向工程的功能。逆向工程是根据数据库表生成对应的Java实体类、Mapper接口以及Xml文件的工具,可以大大降低手动编写代码的工作量。本文将介绍如何使用逆向工程生成代码,以及其中的注意事项。

准备工作

在操作逆向工程之前,我们需要创建好数据库和表,并向表中插入若干条数据。本文不会过多讲述数据库和表的创建过程,可参考相关资料进行学习。这里假设我们有一个名为 pyg 的数据库,其中有一个 tb_brand 表,表的结构如下:

CREATE TABLE `tb_brand` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `first_char` varchar(1) DEFAULT NULL,
  `image` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

配置逆向工程

MyBatis提供了一个叫做mybatis-generator的插件来执行逆向工程,我们需要按照以下步骤进行配置:

  1. pom.xml 文件中,添加 mybatis-generator-maven-plugin 插件的依赖:
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.4.0</version>
</dependency>
  1. pom.xml 文件中,添加 generatorConfig.xml 配置文件:
<build>
    <plugins>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.4.0</version>
            <configuration>
                <configurationFile>
                    src/main/resources/generatorConfig.xml
                </configurationFile>
                <overwrite>true</overwrite>
                <verbose>true</verbose>
            </configuration>
            <dependencies>
                <!-- MySQL驱动 -->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>8.0.23</version>
                </dependency>
                <!-- MyBatis逆向工程 -->
                <dependency>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-core</artifactId>
                    <version>1.4.0</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

这里需要注意以下几点:

  • <configuration> 元素中,configurationFile 属性指定逆向工程的配置文件路径。本例中配置文件路径为 src/main/resources/generatorConfig.xml
  • <overwrite> 属性指定是否覆盖已有的代码文件。设为true时表示直接覆盖;
  • <dependencies> 元素中需要引入MySQL驱动和MyBatis逆向工程依赖。

  • 创建 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="mysql-connector-java-8.0.23.jar" />
    <context id="MySQL"
             targetRuntime="MyBatis3">
        <!-- jdbc配置 -->
        <jdbcConnection
                driverClass="com.mysql.cj.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/pyg?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;useUnicode=true&amp;characterEncoding=utf-8"
                userId="root"
                password="root">
        </jdbcConnection>

        <!-- 生成Java文件的路径 -->
        <javaModelGenerator
                targetPackage="com.pinyougou.pojo"
                targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- 生成Mapper接口文件的路径 -->
        <sqlMapGenerator
                targetPackage="com.pinyougou.mapper"
                targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- 生成对应Mapper XML文件的路径 -->
        <javaClientGenerator
                type="XMLMAPPER"
                targetPackage="com.pinyougou.mapper"
                targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- 要生成实体类、Mapper接口以及Mapper XML文件的数据库表 -->
        <table tableName="tb_brand"/>
    </context>
</generatorConfiguration>

这里需要注意以下几点:

  • classPathEntry 元素中指定驱动程序的位置;
  • jdbcConnection 元素中的属性值表示数据库的连接信息;
  • javaModelGenerator 元素中的 targetPackage 属性表示Java实体类的生成路径;
  • sqlMapGenerator 元素中的 targetPackage 属性表示Mapper接口的生成路径;
  • javaClientGenerator 元素中的 targetPackage 属性表示Mapper XML文件的生成路径;
  • table 元素指定要生成代码的数据库表名。

执行逆向工程

配置文件创建好之后,我们就可以使用逆向工程生成代码了。在命令行中输入以下命令:

$ mvn mybatis-generator:generate

这条命令会让 Maven 执行逆向工程的流程,在 target 目录下生成 Java 实体类、Mapper 接口以及 Mapper XML 文件。完成后,我们可以自由地对生成的代码进行修改和调整。

结论

本文介绍了如何使用MyBatis逆向工程生成代码,大大减轻了手写代码的工作量。对于大量使用MyBatis的应用程序而言,逆向工程是一个功不可没的利器。值得一提的是,逆向工程虽然有着自动化的特点,但是在生成代码后仍需要针对代码的逻辑进行适当的调整和修改。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:品优购商城项目(一)mybatis逆向工程 - Python技术站

(0)
上一篇 2023年3月28日
下一篇 2023年3月28日

相关文章

  • VisualStudio网页怎么设计验证用户名和密码的功能?

    设计验证用户名和密码的功能通常会涉及到前端和后端的配合,以下是一个完整的攻略: 前端设计 首先,在 HTML 中添加一个表单,包含用户名和密码的输入框,和一个提交按钮。 <form> <label>用户名:</label> <input type="text" id="username&…

    other 2023年6月27日
    00
  • CAP-微服务间通信实践

    CAP-微服务间通信实践 概述 随着微服务架构的流行,微服务之间通信成为了一个必须要考虑的问题。在微服务架构中,微服务间的通信主要分为两种方式:同步和异步。 同步通信包括了HTTP调用、RPC调用等,主要通过阻塞等待来实现,直接返回请求结果。 异步通信则包括了消息队列,主要通过发布订阅模式来实现,不对请求结果进行直接返回,而是将请求结果放入消息队列,在之后处…

    其他 2023年3月28日
    00
  • linux学习之iostat命令详解

    Linux学习之iostat命令详解 iostat是Linux系统中的一个性能监控工具,用于监控系统的磁盘I/O性能。本文将详细讲解iat命令用法和参数,包括如何使用iostat命令来监控磁盘I/O性能。 iostat命令的用法 iostat命令的用法如下: iostat [选项] [时间间隔] [次数] 其中,选项包括: -c:显示CPU使用情况。 -d:…

    other 2023年5月7日
    00
  • 分享JavaScript 中的几种继承方式

    分享JavaScript 中的几种继承方式 为什么需要继承? 在编写代码的过程中,我们不可能每一次都从零开始写。很多时候,我们需要利用现有的代码来实现新的功能,这就是继承的一个重要应用场景。 我们之所以需要继承,是因为继承可以让我们复用代码,避免重复劳动和代码冗余。当我们需要对某一种对象进行扩展时,继承就是我们的好选择。 继承的几种方式 在JavaScrip…

    other 2023年6月26日
    00
  • 中文用户名的js检验正则

    以下是详细的中文用户名的js检验正则的攻略: 1. 确定用户名要求 在正则表达式编写之前,首先需要确定中文用户名的具体要求。一般而言,中文用户名要求如下: 由中文字符组成(包括中文字符、汉字、繁体字等) 长度为2到15个字符之间 可以包含数字、字母或下划线,但不能以这些字符开头或结尾 2. 编写正则表达式 根据上述要求,可以编写出如下正则表达式: /^[\u…

    other 2023年6月27日
    00
  • Android Jetpack库剖析之LiveData组件篇

    首先,可以从以下几个方面来介绍”Android Jetpack库剖析之LiveData组件篇”: 1. LiveData组件的概述 在此部分,我们可以先介绍LiveData组件的定义,生命周期和优点。LiveData组件是一个具有数据观察和通知能力的数据持有类,主要是为了简化实现数据驱动界面的方式。LiveData组件能够感知Activity或者Fragme…

    other 2023年6月27日
    00
  • Mybatis select记录封装的实现

    “Mybatis select记录封装的实现”指的是在Mybatis框架中如何将从数据库中查询到的记录封装成Java对象。下面是一个完整攻略: 1. Mybatis resultMap Mybatis提供了resultMap来将查询结果映射成Java对象。在mapper文件中定义resultMap: <resultMap id="userRe…

    other 2023年6月25日
    00
  • 解决vue项目nginx部署到非根目录下刷新空白的问题

    下面是解决 Vue 项目在 Nginx 部署非根目录下刷新空白的问题的完整攻略。 问题描述 当 Vue 项目部署在 Nginx 上,并且不是在根目录下,比如在 http://example.com/vueapp 目录下时,直接访问路由会导致刷新后页面空白,浏览器控制台提示 404 错误。 原因分析 这是因为 Vue 项目使用的是前端路由,刷新页面时浏览器会向…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部