mysql generator 配置_MyBatis Generator 超详细配置

2023-11-03

想快速开始,请直接拉到最后,看整体配置。

MyBatis Generator 是 MyBatis 提供的一个代码生成工具。可以帮我们生成 表对应的持久化对象(po)、操作数据库的接口(dao)、CRUD sql的xml(mapper)。

MyBatis Generator 是一个独立工具,你可以下载它的jar包来运行、也可以在 Ant 和 maven 运行。

使用环境

我是在 maven 中配置并使用的。这篇文章也是基于 maven 环境来讲解。

既然使用了 MyBatis Generator ,那么你的项目一定使用了 MyBatis, 并且一定使用了某一种数据库,并且这些依赖应该已经在 maven 中配置好了。

例如

接下来需要在 pom 中引入 MyBatis Generator 插件

引入 MyBatis Generator 插件

在 pom 的根节点下添加以下配置

org.mybatis.generator

mybatis-generator-maven-plugin

1.3.7

复制代码

配置 MyBatis Generator 插件

光引入 MyBatis Generator 插件还不行,还得配置 MyBatis Generator插件

配置 MyBatis Generator config 文件路径

MyBatis Generator 插件需要根据一个 MyBatis Generator config 文件,来具体运行

配置如下,版本我用的是目前最新的版本 1.3.7

org.mybatis.generator

mybatis-generator-maven-plugin

1.3.7

src/main/resources/mybatis-generator-config.xml

复制代码

注意,这个路径是你的配置文件相对于该 pom 文件的路径

至于这个文件该怎么配置我们待会在

允许覆盖生成的文件

有时候我们的数据库表添加了新字段,需要重新生成对应的文件。常规做法是手动删除旧文件,然后在用 MyBatis Generator 生成新文件。当然你也可以选择让 MyBatis Generator 覆盖旧文件,省下手动删除的步骤。

配置如下

org.mybatis.generator

mybatis-generator-maven-plugin

1.3.7

src/main/resources/mybatis-generator-config.xml

true

复制代码

值得注意的是,MyBatis Generator 只会覆盖旧的 po、dao、而 *mapper.xml 不会覆盖,而是追加,这样做的目的是防止用户自己写的 sql 语句一不小心都被 MyBatis Generator 给覆盖了

添加数据库驱动依赖

MyBatis Generator 需要链接数据库,肯定是需要对应数据库驱动的依赖的。

如下,给 MyBatis Generator 添加数据库驱动依赖

org.mybatis.generator

mybatis-generator-maven-plugin

1.3.7

src/main/resources/mybatis-generator-config.xml

true

mysql

mysql-connector-java

8.0.17

复制代码

我用的数据库是 mysql ,其他数据库同理。注意数据库驱动的版本号,不同的版本对应的 MyBatis Generator 配置有些许不同,之后会讲。

大部分情况下,我们的项目中已经配置过了对应数据库的JDBC驱动,如下

现在在插件中又配置一次,感觉有些冗余,maven 提供了 includeCompileDependencies 属性,让我们在插件中引用 dependencies 的依赖,这样就不需要重复配置了。

配置如下

org.mybatis.generator

mybatis-generator-maven-plugin

1.3.7

src/main/resources/mybatis-generator-config.xml

true

true

复制代码

添加其他依赖

一般配置了 includeCompileDependencies 后就不需要配置其他依赖了,因为 includeCompileDependencies 会将当前 pom 的 dependencies 中所以 Compile 期的依赖全部添加到生成器的类路径中。

但有的人不想配置 includeCompileDependencies ,或者想在MyBatis Generator插件中使用另一个版本的依赖,就可以配置 dependencies

如图

另外,我看到网上大部分文章都会配置 mybatis-generator-core 这个依赖,但是 MyBatis Generator 官网的案例中都没有提到说要配置这个依赖,我没有配置,并且可以正常使用 MyBatis Generator

配置 MyBatis Generator Config

MyBatis Generator 插件启动后,会根据你在 pom 中配置都路径找到该配置文件。

这个配置文件才是详细都配置 MyBatis Generator 生成代码的各种细节。

其中最重要的就是 context ,你的配置文件至少得包含一个context

引入外部配置文件

MyBatis Generator config 是可以引入外部配置文件的,如下,路径为相对于当前配置文件的路径

代码如下,注意是配置在  下

复制代码

配置文件中的内容如下

之后可以通过 ${xxx} 来引用外部配置文件中的值

配置context

注意是配置在  下

复制代码

id : 随便填,保证多个 context id 不重复就行

defaultModelType : 可以不填,默认值 conditional,flat表示一张表对应一个po

targetRuntime :可以不填,默认值 MyBatis3,常用的还有 MyBatis3Simple,这个配置会影响生成的 dao 和 mapper.xml的内容

targetRuntime = MyBatis3,生成的 dao 和 mapper.xml 如下

targetRuntime = MyBatis3Simple,生成的 dao 和 mapper.xml 如下,接口会少很多,只包含最最常用的

context 节点就讲完了,唯一需要注意的就是targetRuntime的值,该配置成什么看个人喜好

context的子元素

上一节只是配置了 context 节点, context 里面还有子元素需要配置。

context的子元素必须按照以下给出的个数、顺序配置。(是的,没错 MyBatis Generator 对配置的循序还有要求)

property (0..N)

plugin (0..N)

commentGenerator (0 or 1)

jdbcConnection (需要connectionFactory 或 jdbcConnection)

javaTypeResolver (0 or 1)

javaModelGenerator (至少1个)

sqlMapGenerator (0 or 1)

javaClientGenerator (0 or 1)

table (1..N)

plugin

配置一个插件,例如

复制代码

这个插件给生成的Java模型对象增加了equals和hashCode方法

commentGenerator

commentGenerator 用来配置生成的注释。默认是生成注释的,并且会生成时间戳,如下

如果你想要保留注释和时间戳,可以不配置 commentGenerator。

如果你不想保留时间戳,需要如下配置

复制代码

默认生成的注释是不会有 db 表中字段的注释,如果你想知道每个字段在数据库中的含义(前提是数据库中对应表的字段你添加了注释),可以如下配置

复制代码

但说实话,MyBatis Generator 生成注释无用信息太多了,所以我一般都选择不生成注释

复制代码

jdbcConnection

MyBatis Generator 需要链接数据库,所以需要配置 jdbcConnection,具体如下

connectionURL="${spring.datasource.url}"

userId="${spring.datasource.username}"

password="${spring.datasource.password}">

复制代码

${}里面是外部配置文件中的"name"

你也可以写死,那就不需要配置了

这里面值得注意的是,因为我用的 mysql-connector-java 版本是 8.0.17,如果配置这一项,会找不到对应的数据库,官网对此的解释是

javaTypeResolver

javaTypeResolver 是配置 JDBC 与 java 的类型转换规则,或者你也可以不用配置,使用它默认的转换规则。

就算配置也只能配置 bigDecimal 类型和时间类型的转换

复制代码

javaModelGenerator

配置 po 生成的包路径和项目路径,如下

复制代码

 生成出来的 set 方法如下

 时,可能会在 po 目录下在创建一个 “数据库名” 的文件夹,生成的 po 会放在该文件夹下,也就是说会多一层目录,用的上的可以配置

sqlMapGenerator

配置 Mapper.xml 文件的生成目录

复制代码

javaClientGenerator

配置 XxxMapper.java 文件的生成目录

复制代码

type="XMLMAPPER" 会将接口的实现放在 mapper.xml中,也推荐这样配置。也可以设置 type 为其他值,比如 type="ANNOTATEDMAPPER",接口的实现通过注解写在接口上面,如图

如果采用这种方式,不会生成 mapper.xml 也不用配置 ,但是采用注解来实现接口应对简单查询还好,如果是复杂查询并不如xml方便,所以还是建议将type配置成XMLMAPPER

table

一个 table 对应一张表,如果想同时生成多张表,需要配置多个 table

enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false"

enableUpdateByExample="false" selectByExampleQueryId="false">

复制代码

其中 domainObjectName 不配置时,它会按照帕斯卡命名法将表名转换成类名

enableXXXByExample 默认为true,但只有在targetRuntime="MyBatis3"时才生效

生效时,会在po下多生成一个 XxxExample.java 的文件,如下

一个简单的user的Example帮助类有470行,我一般不会去用,如上全设置为false

当 targetRuntime="MyBatis3Simple"时,enableXXXByExample 不管为true、还是false 都不生效

整体配置

pom 整体配置

org.mybatis.generator

mybatis-generator-maven-plugin

1.3.7

src/main/resources/mybatis-generator-config.xml

true

mysql

mysql-connector-java

8.0.17

复制代码

MyBatis Generator Config 整体配置

/p>

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

connectionURL="${spring.datasource.url}"

userId="${spring.datasource.username}"

password="${spring.datasource.password}">

enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false"

enableUpdateByExample="false" selectByExampleQueryId="false">

复制代码

外部配置文件整体配置

MyBatis Generator Config 引用的外部配置文件内容如下

# mysql

spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/boot?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai

spring.datasource.username=root

spring.datasource.password=123456

复制代码

使用 MyBatis Generator

配置好后,双击 maven 中的 MyBatis Generator 运行

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql generator 配置_MyBatis Generator 超详细配置 的相关文章

  • 前端常用js加密方法

    这里罗列前端常用的js加密方法 base64加密
  • 计算机网络知识点(网络层)

    文章目录 重要内容 4 1 网络层提供的两种服务 4 2 网际协议IP 4 2 1 虚拟互联网络 4 2 2 分类的IP地址 4 2 3 IP地址与硬件地址 4 2 4 地址解析协议ARP 4 2 5 IP数据报的格式 4 2 6 IP层转
  • 关于Android证书MD5获取

    Android打包证书获取MD5值 最近在学习Android开发 在打包成apk时发现需要一个证书文件 于是就随手生成了一个证书文件 在后期使用百度人脸识别SDK时发现需要用到证书文件的MD5值 按照百度说明文档以及网上大多数查看证书文件的
  • Centos7安装配置nginx

    1 前言 在进行nginx安装前 考虑到本博客针对很多新手朋友我决定还是先介绍一些nginx知识 这样更加有利于各位读者朋友对nginx的理解 对后续学习也有很大帮助 介绍 Nginx engine x 是一个高性能的HTTP和反向代理we
  • Android jni报错No implementation found

    2022 04 18 20 25 52 738 28123 28123 com example insectdetector E AndroidRuntime FATAL EXCEPTION main Process com example
  • JS数组和方法【一】

    冒泡排序 数组排序 冒泡排序 冒泡排序 是一种算法 把一系列的数据按照一定的顺序进行排列显示 从小到大或从大到小 var arr 2 3 4 1 2 for var i 0 i lt arr length i 外层循环管趟数 for var
  • IDEA 无法显示 Services,Run Dashboard 的解决方法

    IDEA 无法显示 Run Dashboard 的解决方法 步骤 1 新版的 idea 把 dashboard 已经整合到 service 里面了 但是操作步骤依然是不变的 步骤 2 如果你连 services 都看不到 双击一下 shif
  • ssh框架基于java的爱心捐助平台源码+论文第三稿+查重报告+代码讲解视频(包安装,已降重)

    项目名称 ssh框架基于java的爱心捐助平台源码 效果视频 ssh框架基于java的爱心捐助平台源码 系统说明 功能模块设计 1 系统登录 主要分为管理员和普通用户 由数据库判断输入的账户信息是那种角色 在判断验证的账号和密码匹配后方可正
  • 孔明六曜星图生图总结

    图生图功能 1 图生图 就是文生图加张参考图 2 绘图 就是图生图加上手绘 3 局部重绘 就是只画图生图中的一部分功能 4 局部重绘 手涂蒙版 就是图生图的一部分功能加上绘图 5 上传蒙版 就是局部重绘加上PS的蒙版处理 规定边界 6 批量
  • mybatis工作原理

    1 基本原理 首先看一段JDBC代码 Class forName com mysql jdbc Driver String url jdbc mysql localhost 3306 localdb Connection con Drive
  • 从停产到宣布倒闭,Kuri 见证了一段家庭机器人兴衰史

    转自 https new qq com omn 20180824 20180824A1RPR5 html 曾经勾勒的美好蓝图说没就没了 shenzhenware 上个月 家庭机器人制造商 Mayfield Robotics 曾宣布 因母公司
  • 高可用集群软件Heartbeat介绍

    一 Heartbeat的定义 Heartbeat 项目是 Linux HA 工程的一个组成部分 也是目前开源HA项目中最成功的一个例子 Linux HA的全称是High Availability Linux 这个开源项目的目标是 通过社区开
  • 【微信小程序】background-image设置背景图片不显示的解决办法

    相关代码如下
  • 芯片科技科普2芯片分类

    02芯片分类 这么多芯片 有没有什么系统的分类方式呢 其实芯片的分类方式有很多种 按照处理信号方式可以分成 模拟芯片 数字芯片 信号分为模拟信号和数字信号 数字芯片就是处理数字信号的 比如CPU 逻辑电路等 模拟芯片是处理模拟信号的 比如运
  • 探索Python异常:让程序不再崩溃!

    文章目录 前言 什么是异常 捕获异常 基本语法 捕获指定类型异常 捕获多个指定类型的异常 捕获异常描述信息 捕获所有异常 else finally 异常的嵌套 自定义异常 结语 前言 在编程的世界中 我们常常会面对各种各样的错误和异常情况
  • 【2022年10月最新】人体姿态估计coco test-dev 官网在线测试关键点检测结果

    之前的coco test dev已被弃用 根据它的信息 我们进入新的地址 https codalab lisn upsaclay fr 然后我们点击Search Competitions 然后输入 COCO Keypoint Challen
  • SolidWorks机械制图

    SolidWoks主要包括 草图 零件图 装配图 工程图 我决定还是写在csdn上面 这样我能够每天看到自己的学习进度 也可以更好的提升自己 目录 草图绘制 直线 矩形 圆 槽 默认直槽口 圆弧 圆角 草图几何关系 裁剪实体 等距实体 默认
  • win10系统如何连接宽带连接服务器,win10怎么连宽带_win10系统如何连接宽带

    现如今很多朋友都在使用win10系统 但是很多朋友还不太熟悉win10系统中的一些操作 win10系统的宽带连接功能应该怎么设置呢 相信还有很多人不明白win10怎么连宽带 也不知道windows10宽带连接在哪设置 别着急 小编这就为大家
  • 看书标记【R语言数据分析项目精解:理论、方法、实战 2】

    看书标记 关于R语言 chapter 2 R语言基础 2 1 安装R语言 2 2 R语言基本对象 2 2 2 向量 R语言数据分析项目精解 理论 方法 实战 chapter 2 R语言基础 R语言用高深的理论作为支撑 用简捷的语法作为工具

随机推荐

  • 矩阵内积运算

    设有矩阵A a1 a2 a3 a4 和矩阵 B b1 b2 b3 b4 那么矩阵A与B的内积为 内积 a1 x b1 a2 x b2 a3 x b3 a4 x b4
  • sql表中增加一列_产品经理学SQL(五)

    我们上一篇文章产品经理学SQL 四 说到了数据库定义语言 它们包含数据库的相关操作 创建数据库 删除数据库 数据库的命名规范 和数据表的相关操作 创建数据表 删除数据表 数据表的命名规范 这一篇文章我们接着分享 数据库定义语言 1 查看数据
  • three.js 物体的简单拖拽功能

    1 准备 DragControls js
  • 用蓝桥杯单片机使用串口通信发送数字与字符串和接收数据

    目录 1 发送与接收数字 1 基本功能 2 初始化 3 电脑发送数据功能 4 代码 2 发送与接收字符串 1 基本功能 2 初始化 3 电脑发送数据功能 4 代码 1 发送与接收数字 1 基本功能 1 通过串口1发送数据 2 电脑发送数字给
  • 面试题:分布式锁,谈谈设计思路和方案

    面试官 项目有用到分布式锁吗 谈谈设计思路和方案 答 主要根据具体的业务场景展开描述 这边各个项目不一样 就不展开说了 主要是引入redis实现的分布式锁 应该保证互斥性 在任何时候只有一个客户端持有锁 使用setnx 不能死锁 设置过期时
  • jasypt加密解密

    jasypt加密解密 1 导入依赖
  • 用队列解决农夫过河问题

    题目 农夫要把狼 羊 菜和自己运到河对岸去 只有农夫能够划船 农夫每次只能运一种东西 就是如果没有农夫看着 羊会偷吃菜 狼会吃羊 sheep 0x01 cabage 0x02 wolf 0x04 farmer 0x08 起初目的岸边什么都没
  • 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(

    新建项目13IO 13IO pro HEADERS MyWidget h SOURCES MyWidget cpp QT gui widgets network CONFIG C 11 MyWidget h ifndef MYWIDGET
  • linux挂载新磁盘、分区和开机自动挂载

    查看分区 php view plain copy fdisk l 其中第一个框和第二个框 是已经分好区的磁盘 第三个硬盘没有分区 开始分区 html view plain copy fdisk dev sdc 输入m 可以查看有哪些操作 输
  • 2021-03-30 重定向

    重定向和转发的区别 相同点 页面都会实现跳转 不同点 请求转发的时候 url不会发生变化 重定向时候 url地址会发生变化
  • linux命令

    功能 linux命令 备注 创建目录 mkdir p dirname p 确保目录名称存在 不存在的就建一个 创建文件 touch 显示文件路径 pwd 绝对路径 查找指定文件 find name 20230516 txt 可改为其他指定路
  • JAVA高并发---收藏的好文章(持续更新)

    JAVA高并发 AQS详解 转载 学习前因 本来对多线程略懂 最近忽然看到了CountDownLatch 的用法 忽然想简单看看它的原理 了解一下它阻塞线程的方法 我只知道阻塞线程的lock 和wait notifyAll 才发现原来还有L
  • 冒泡排序(一)

    package com test basic array 功能 冒泡排序 从小到大排 思路 相邻两个数比较 左边比右边大则交换 整体比较完毕是一次排序 这样的排序要进行n 1趟 public class BubbleSort public
  • 拉普拉斯平滑

    之前的博客介绍过自己对于正则化的理解 经过这段时间的进一步接触 尤其是看了一些关于这一方面的paper 做了一些简短的实验 发现正则化真是一个很给力的建模方法 近期 看到了Laplacian Smoothing 相信很多童鞋遇到过这两个单词
  • 微信小程序完整项目实战(前端+后端)

    基于微信小程序的在线商城点单系统 前言 闲来无事 想以后自己开一个小超市或者小吃店 能够支持线上下单 既方便客户也方便自己 系统采用C 语言作为后端实现与小程序的交互 给用来学习或者想自己开个小店的朋友当个参考 文末获取源码联系 精彩专栏持
  • 2021-5-08 力扣每日一题

    1723完成所有工作的最短时间 虽迟但到 带你一文读懂状态压缩在动态规划中的应用 题目表述 给你一个整数数组 jobs 其中 jobs i 是完成第 i 项工作要花费的时间 请你将这些工作分配给 k 位工人 所有工作都应该分配给工人 且每项
  • cookie与session区别以及机制原理 http以及https

    cookie与sseion区别 1 cookie保存在客户端 session保存在服务端 2 cookie只能保管ascii字符串 session能存取任意类型数据 如 String Integer List Map等 也能保管Java B
  • How To Lock/Unlock User Accounts From The Terminal Under Ubuntu/Linux Mint

    In a previous article we have seen how to add remove user accounts from the terminal under Ubuntu Linux Mint Today we wi
  • uni-app如何导入秋云 ucharts echarts 高性能跨全端图表组件

    感性认识 想在 uni app 中使用 ucharts 官方提供了两种方法 uni modules版本 非 uni modules版本 何为 uni modules 请看官方文档 uni modules插件规范 uni app官网 dclo
  • mysql generator 配置_MyBatis Generator 超详细配置

    想快速开始 请直接拉到最后 看整体配置 MyBatis Generator 是 MyBatis 提供的一个代码生成工具 可以帮我们生成 表对应的持久化对象 po 操作数据库的接口 dao CRUD sql的xml mapper MyBati