如何运用Mybatis Genertor

MyBatis Generator是一个MyBatis的代码生成器,它可以帮助我们快速生成Mapper接口以及对应的XML文件和模型类。在Java开发中,能大大提升开发效率。本文将介绍如何在IntelliJ IDEA中使用MyBatis Generator。

1. 添加MyBatis Generator依赖

我们首先需要在项目中加入mybatis-generator-maven-plugin插件,打开pom.xml文件,添加如下内容:

<plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.0</version><configuration><configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration>  <executions><execution><id>Generate MyBatis Artifacts</id><phase>deploy</phase><goals><goal>generate</goal></goals></execution></executions><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version></dependency></dependencies></plugin>
</plugins>

上述代码告诉Maven我们的项目需要使用MyBatis Generator,并且需要使用MySQL的驱动进行数据库连接。

接下来,详细解释一下配置文件中的executions标签configuration标签的作用

1.1、executions标签

        <executions><execution><id>Generate MyBatis Artifacts</id><phase>deploy</phase><goals><goal>generate</goal></goals></execution></executions>

这是一个Maven插件配置,它用来在特定的生命周期阶段执行特定的目标(goal)。

首先,<executions>标签里面的配置指的是插件的执行情况。

  • <execution>: 表示插件的一个执行操作。
  • <id>: 是这个执行操作的标识。
  • <phase>: 这个标签指定了在Maven的哪个生命周期阶段执行这个操作。在这里,<phase>deploy</phase>表示这个操作将在deploy阶段(也就是项目包已经构建完并且已经安装到本地仓库,接下来就要进行部署的阶段)执行。
  • <goals>: 插件目标,可以包含一个或多个<goal>元素,表示执行插件的哪些功能。这里的<goal>generate</goal>即表示执行generate目标,如果是MyBatis Generator插件的话,表示进行代码生成。

这个配置的意思是:在Maven的deploy阶段执行MyBatis Generator代码生成。

⚠️主要作用:

这个配置的作用是让Maven在特定的生命周期阶段(这里是 deploy 阶段)自动执行MyBatis Generator的代码生成操作。

<goal>generate</goal> 表示要执行的操作是“生成”。 对于MyBatis Generator插件来说,这就是根据你在配置文件中定义的数据库表结构,生成相应的 Java POJO 类,数据库操作 Mapper 接口以及相应的 SQL 映射文件。

一般来说,我们可能会手动启动生成操作,但是有了这个配置,每当你运行 mvn deploy 命令部署你的项目时,Maven就会在deploy阶段自动调用MyBatis Generator的generate目标,为你的数据库表自动生成代码。

这使得你的代码生成步骤与你的项目构建过程(即 Maven 生命周期)融为一个整体,让整个过程自动化起来,大大提高了效率。此外,你也无需担心由于手动触发生成操作而可能导致的遗漏或者错误。

1.2、configuration标签

        <configuration><configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration>  

这个<configuration>部分是用来设置 MyBatis Generator 插件的配置参数的。

  • <configurationFile>:这个参数用来指定 MyBatis Generator 的配置文件路径。${basedir}是Maven的一个变量,代表项目的根目录,所以这里的${basedir}/src/main/resources/generatorConfig.xml就表示项目根目录下的src/main/resources/generatorConfig.xml这个MyBatis Generator的配置文件。
  • <overwrite>:这个参数设定是否覆盖原有的代码。如果设置为true,那么在生成新的代码的时候,相同的旧代码文件将被覆盖;如果设置为false,相同的旧代码文件则会被保留,不会被新代码覆盖。
  • <verbose>:这个参数设定是否输出详细的运行过程信息。如果设置为true,那么MyBatis Generator在运行的时候会输出详细的步骤信息,有助于你查看和了解生成过程的详细情况。

总之,这一部分配置指定了 MyBatis Generator 的代码生成行为的一些具体参数。

2. 配置MyBatis Generator

MyBatis Generator的配置文件一般命名为generatorConfig.xml,配置文件中包括了数据库的连接信息,以及我们希望生成的模型类和Mapper接口的位置等信息。

一个典型的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><context id="idata" defaultModelType="flat"><property name="javaFileEncoding" value="UTF-8"/><property name="autoDelimitKeywords" value="true"/><property name="beginningDelimiter" value="`"/><property name="endingDelimiter" value="`"/><plugintype="com.softwareloop.mybatis.generator.plugins.LombokPlugin"/><commentGenerator><property name="suppressDate" value="true"/><property name="suppressAllComments" value="true"/></commentGenerator><jdbcConnectiondriverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/database_name"userId="your_username"password="your_password"/> <!--测试库地址、用户名、密码--><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><javaModelGeneratortargetPackage="com.longfor.idata.server.dao.entity"targetProject="/Users/***/***/server/src/main/java"/> <!--本机绝对路径--><javaClientGeneratortargetPackage="com.longfor.idata.server.dao.mapper"targetProject="/Users/***/***/server/src/main/java"type="ANNOTATEDMAPPER"/> <!--本机绝对路径--><table tableName="t_collect"><generatedKey column="id" sqlStatement="MySql" identity="true"/></table><table tableName="t_files"><generatedKey column="id" sqlStatement="MySql" identity="true"/><columnOverride column="download_status" javaType="java.lang.Integer"/></table><table tableName="t_requirement"><generatedKey column="id" sqlStatement="MySql" identity="true"/></table><table tableName="t_requirement_state"><generatedKey column="id" sqlStatement="MySql" identity="true"/></table><table tableName="t_statement_share"><generatedKey column="id" sqlStatement="MySql" identity="true"/></table><table tableName="t_visiting_record"><generatedKey column="id" sqlStatement="MySql" identity="true"/></table></context>
</generatorConfiguration>

3. 运行MyBatis Generator

在IDEA中,我们可以通过Terminal输入mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate,然后点击运行。即可生成相应的Java模型类和Mapper文件。
在这里插入图片描述

4. 查看生成的代码

最后我们可以在指定的目录下看到generatorConfig.xml中配置的tableName所对应的Java模型类和Mapper。


以上就是在IntelliJ IDEA中使用MyBatis Generator的步骤,希望对你的开发工作有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计网 - 深入理解HTTPS:加密技术的背后

文章目录 Pre发展历史Http VS HttpsHTTPS 解决了 HTTP 的哪些问题HTTPS是如何解决上述三个风险的混合加密摘要算法 数字签名数字证书 Pre PKI - 数字签名与数字证书 PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证 发展历史 HTTP&#xff08;超文本传输协…

代码随想录算法训练营第二十五天补|216.组合总和III ● 17.电话号码的字母组合

组合问题&#xff1a;集合内元素的组合&#xff0c;不同集合内元素的组合 回溯模板伪代码 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&#xff08;树中节点孩子的数量就是集合的大小&#xff09;) {处理节点;backtrackin…

人工智能绘画的时代下到底是谁在主导,是人类的想象力,还是AI的创造力?

#ai作画 目录 一.AI绘画的概念 1. 数据集准备&#xff1a; 2. 模型训练&#xff1a; 3. 生成绘画&#xff1a; 二.AI绘画的应用领域 三.AI绘画的发展 四.AI绘画背后的技术剖析 1.AI绘画的底层原理 2.主流模型的发展趋势 2.1VAE — 伊始之门 2.2GAN 2.2.1GAN相较于…

深度学习系列60: 大模型文本理解和生成概述

参考网络课程&#xff1a;https://www.bilibili.com/video/BV1UG411p7zv/?p98&spm_id_frompageDriver&vd_source3eeaf9c562508b013fa950114d4b0990 1. 概述 包含理解和分类两大类问题&#xff0c;对应的就是BERT和GPT两大类模型&#xff1b;而交叉领域则对应T5 2.…

【C++精简版回顾】9.static

1.static修饰成员类型 1.类外初始化&#xff0c;初始化时不需要static修饰(不能修饰)&#xff0c;要有类名限定 2.静态成员是属于类的&#xff0c;全对象公有 1.class class MM { public:MM(string name) {size;a size;this->name name;}void print() {cout << &quo…

瑞_23种设计模式_桥接模式

文章目录 1 桥接模式&#xff08;Bridge Pattern&#xff09;1.1 介绍1.2 概述1.3 桥接模式的结构 2 案例一2.1 需求2.2 代码实现 3 案例二2.1 需求2.1 代码实现 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《23种设计模式》的桥接模式篇。本文中的部分图和概念等资料…

【MySQL】连接查询和自连接的学习和总结

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-x4sPmqTXA4yupW1n {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

限流算法

下面对常见的限流算法进行讨论。目前&#xff0c;常用的限流算法主要有三种&#xff1a;计数器法、滑动窗口算法、漏桶算法和令牌桶算法。下面分别介绍其原理。 1. 计数器法 计数器法是通过计数对到来的请求进行选择性处理。如系统限制一秒内最多有X个请求&#xff0c;则在该…

《艾尔登法环 黄金树幽影》是什么?Mac电脑怎么玩《艾尔登法环》艾尔登法环下载

全体起立&#xff0c;《艾尔登法环 》最新DLC《黄金树幽影》将在6月21日发布&#xff0c;steam售价198元&#xff0c;现在就可以预订了。宫崎英高在接受FAMI通的采访时表示&#xff0c;新DLC的体量远超《黑暗之魂》和《血源诅咒》资料片。好家伙&#xff0c;别人是把DLC续作&am…

IO进程线程:通信

1.定义互斥锁 #include<myhead.h>int num520;//临界资源//1.创建一个互斥锁变量 pthread_mutex_t mutex;//定义任务&#xff11;函数 void *task1(void *arg) {printf("11111111111111\n");//3.获取锁资源pthread_mutex_lock(&mutex);num1314;sleep(3);pr…

EasyRecovery 16数据恢复软件功能介绍及2024 年最新easyrecover激活密钥?

EasyRecovery Photo16 for windows数据恢复软件免费版下载是一款由Kroll Ontrack公司开发的数据恢复软件&#xff0c;其主要功能是恢复已经删除或损坏的图片文件。该软件可用于恢复各种类型的图片文件&#xff0c;包括JPEG、GIF、BMP、PNG等&#xff0c;同时也支持恢复照片文件…

python-pyecharts画饼图

pyecharts饼图 from pyecharts import options as opts from pyecharts.charts import Pie# 构造数据 data [("A", 10),("B", 20),("C", 30),("D", 40),("E", 50) ]# 实例化饼图 pie Pie()# 添加数据 pie.add("&qu…

【Java多线程】对线程池的理解并模拟实现线程池

目录 1、池 1.1、线程池 2、ThreadPoolExecutor 线程池类 3、Executors 工厂类 4、模拟实现线程池 1、池 “池”这个概念见到非常多&#xff0c;例如常量池、数据库连接池、线程池、进程池、内存池。 所谓“池”的概念就是&#xff1a;&#xff08;提高效率&#xff09; 1…

C语言第三十弹---自定义类型:结构体(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 结构体 1、结构体类型的声明 1.1、结构体回顾 1.1.1、结构的声明 1.1.2、结构体变量的创建和初始化 1.2、结构的特殊声明 1.3、结构的自引用 2、结构体内存…

K8S—集群调度

目录 前言 一 List-Watch 1.1 list-watch概述 1.2 list-watch工作机制 二 集群调度 2.1 调度过程 2.2 Predicate 和 Priorities 的常见算法和优先级选项 2.3 调度方式 三 亲和性 3.1 节点亲和性 3.2 Pod 亲和性 3.3 键值运算关系 3.4 Pod亲和性与反亲和性 3.5 示例…

音视频数字化(数字与模拟-电影)

针对电视屏幕,电影被称为“大荧幕”,也是娱乐行业的顶尖产业。作为一项综合艺术,从被发明至今,近200年的发展史中,无人可以替代,并始终走在时代的前列。 电影回放的原理就是“视觉残留”,也就是快速移过眼前的画面,会在人的大脑中残留短暂的时间,随着画面不断地移过,…

暑期宅家?计算机专业必看的8部电影!一定要安利给你们!

代码编程看上去枯燥乏味&#xff0c;但也是艺术的&#xff0c;感性的&#xff0c;计算机编程的许多概念被应用于电影中&#xff0c;其中有些非常之酷炫&#xff0c;它们甚至能帮助开发人员理解一些编程概念。 所以今天学姐来给大家推荐几部心中top级的编程人必看电影&#xff0…

nginx(二)

nginx的验证模块 输入用户名和密码 第一步先下载httpd 这个安装包 第二步编辑子配置文件 然后去网页访问192.168.68.3/admin/ 连接之后&#xff0c;会出现404&#xff0c;404出现是因为没给网页写页面 如果要写页面&#xff0c;则在/opt/html&#xff0c;建立一个admin&#x…

max_element和min_element使用

头文件 #include<alorithm> 作用 用于返回数组或容器中最值元素(最小值、最大值)&#xff0c;值和下标。 使用举例 #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() {/*数组初始化*/vector<int>…

软件设计师软考题目解析05 --每日五题

想说的话&#xff1a;要准备软考了。0.0&#xff0c;其实我是不想考的&#xff0c;但是吧&#xff0c;由于本人已经学完所有知识了&#xff0c;只是被学校的课程给锁在那里了&#xff0c;不然早找工作去了。寻思着反正也无聊&#xff0c;就考个证玩玩。 本人github地址&#xf…