品优购商城项目(一)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日

相关文章

  • weka中十倍交叉验证的结果不一致

    以下是关于“Weka中十倍交叉验证的结果不一致”的完整攻略,包含两个示例。 Weka中十倍交叉验证的结果不一致 在Weka中,十倍交叉验证是一种常用的评估分类器性能的方法。但是,有时候会出现十倍交叉验证的结果不一致的情况。以下是关于如何解决十倍交叉验证结果不一致的详细攻略。 1. 设置随机种子 在Weka中,我们可以设置随机种子来控制十倍交叉验证的随机性。以…

    other 2023年5月9日
    00
  • 辐射4无法快速旅行问题的解决方法

    辐射4无法快速旅行问题的解决方法 问题描述 辐射4中,玩家在某些情况下选择快速旅行时,会发现界面上的提示已经消失,但角色却无法跳转到目的地。此时,玩家只能通过重新启动游戏等非常困难的方式才能解决这个问题。 解决方案 方法 1:使用开发者控制台启动快速旅行 可以通过使用开发者控制台(~)来解决这个问题。按下~键打开开发者控制台,输入如下代码: coc [目的地…

    other 2023年6月27日
    00
  • VC++中进程与多进程管理的方法详解

    针对“VC++中进程与多进程管理的方法详解”的完整攻略,我给出以下详细内容: VC++中进程与多进程管理的方法详解 1. 进程和多进程的概念 进程是一个正在运行的程序的实例,它包含了程序代码和当前正在执行的程序状态。每一个进程都有一个唯一的进程标识符(PID)来区分自己和其他进程。在Windows系统中,每个进程有自己的地址空间、栈、寄存器和堆。 多进程是指…

    other 2023年6月25日
    00
  • java词法分析器DDL递归应用详解

    Java词法分析器DDL递归应用详解 DDL(Deep Directory List)递归算法 是一种非常常用的递归算法。该算法可以递归地遍历指定目录下的所有子目录和文件,获取相应的目录树结构或者文件列表。 在实现Java词法分析器时,DDL递归算法可以被运用于解析Java源代码文件,获取相应的关键字、语句、注释等词法信息,从而对源代码进行分析和处理。 以下…

    other 2023年6月27日
    00
  • JavaSE递归求解汉诺塔问题的思路与方法

    关于JavaSE递归求解汉诺塔问题的思路与方法,应该是这样的: 必要前提 在讲解算法大家之前,我们需要先了解一下汉诺塔问题的规则。汉诺塔问题是一个经典的算法问题,它来源于印度的传说。大概形式就是:有三个柱子,分别记为A、B、C,A柱子上有n个大小不相同的盘子,盘子大小依次从小到大排列。现在要把A柱子上的n个盘子移到C柱子上,但是规定每次只能移动一个盘子,且大…

    other 2023年6月27日
    00
  • vue.js学习之递归组件

    下面是关于vue.js学习递归组件的完整攻略。 什么是递归组件? 递归组件是指在模板内部使用组件本身。在 Vue.js 中,可以通过在组件定义中使用 “name” 选项来使组件可以递归地调用自己。 递归组件的应用场景 递归组件是解决树形结构问题的有效方式。常见的应用场景有无限级分类选择器、评论列表、目录结构等。 递归组件示例1:实现无限级分类选择器 首先,我…

    other 2023年6月27日
    00
  • JPA设置默认字段及其长度详解

    下面是关于“JPA设置默认字段及其长度详解”的完整攻略。 1. JPA字段注解 在JPA中,我们可以使用注解来定义实体类中的字段,比如使用 @Column 注解来定义数据库表中的列。@Column 注解有很多可选参数,其中包括 nullable、length、precision、scale、unique、name 和 columnDefinition。 nu…

    other 2023年6月25日
    00
  • RegexOptions.IgnoreCase正则表达式替换,忽略大小写

    当然!下面是关于\”RegexOptions.IgnoreCase正则表达式替换,忽略大小写\”的完整攻略: RegexOptions.IgnoreCase正则表达式替换,忽略大小写 在C#中,可以使用RegexOptions.IgnoreCase选项来实现正则表达式替换时忽略大小写。以下是两个示例: 示例1:替换字符串中的所有匹配项,忽略大小写 strin…

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