【MyBatis】写了 10 年的代码,我最怕写 MyBatis 这些配置,现在有详解了

在使用 mybatis 过程中,当手写 JavaBeanXML 写的越来越多的时候,就越来越容意出错。这种重复性的工作,我们当然不希望做那么多。

还好, mybatis 为我们提供了强大的代码生成--MybatisGenerator

通过简单的配置,我们就可以生成各种类型的实体类,Mapper接口,MapperXML文件,Example对象等。通过这些生成的文件, 我们就可以方便的进行单表进行增删改查的操作。

以下的工具使用的都是 IDEA

创建Maven项目

菜单上选择新建项目

File | New | Project

选择左侧的Maven

由于我们只是创建一个普通的项目, 此处点击Next即可。 

 输入groupId和artifactid

在我的项目中:

GroupIdcom.homejim.mybatis

ArtifactId 填 mybatis-generator

点击 Next。Finish。

通过以上步骤, 一个普通的Maven项目就创建好了。

 配置generator.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="C:\Users\\Administrator\\.m2\repository\\mysql\\mysql-connector-java\\8.0.12\\mysql-connector-java-8.0.1
<context id="context" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="false"/>
<property name="suppressDate" value="true"/>
</commentGenerator>

<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
password="jim777"/>

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

<javaModelGenerator targetPackage="com.homejim.mybatis.entity" targetProject=".\src\main\java">
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>

<sqlMapGenerator targetPackage="mybatis/mapper" targetProject=".\src\main\resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>

<javaClientGenerator type="XMLMAPPER" targetPackage="com.homejim.mybatis.mapper" targetProject=".\src\main\java">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>

<table tableName="blog" />
</context>
</generatorConfiguration>

需要改一些内容:

本地数据库驱动程序jar包的全路径(必须要改)。

数据库的相关配置(必须要改

相关表的配置(必须要改

实体类生成存放的位置。

MapperXML 生成文件存放的位置。

Mapper 接口存放的位置。

如果不知道怎么改, 请看后面的配置详解

配置pom.xml

在原基础上添加一些内容。


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0  http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.homejim.mybatis</groupId>
<artifactId>mybatis-generator</artifactId>
<version>1.0-SNAPSHOT</version>

<build>
<finalName>mybatis-generator</finalName>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>

<configurationFile>src/main/resources/generator.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>

</project>

需要注意的是 configurationFile 中的文件指的是 generator.xml因此路径写的是该文件的相对路径, 名称也跟该文件相同。到此, mybatis-generator 就可以使用啦。

使用及测试

打开Maven Projects 视图

IDEA 上, 打开:View | Tools | Windwos | Maven Projects

Projects 中双击 mybatis-generator

在右侧此时可以看到 Maven Projects 了。找到 mybatis-generator 插件。

mybatis-generator | Plugins | mybatis-generator | mybatis-generator

双击运行

运行正确后, 生成代码, 得到如下的结构

仅仅是上面那么简单的使用还不够爽。那么我们就可以通过更改 generator.xml 配置文件的方式进行生成的配置。

推荐查看官方的文档。

英文不错的:MyBatis Generator Core – MyBatis Generator XML Configuration File Reference

中文翻译版:http://mbg.cndocs.ml/index.html

官网没有的property标签

该标签在官网中只是说用来指定元素的属性, 至于怎么用没有详细的讲解。

分隔符相关

<property  name="autoDelimitKeywords" value="true"/>
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>

以上的配置对应的是 mysql当数据库中的字段和数据库的关键字一样时, 就会使用分隔符。

比如我们的数据列是 delete, 按以上的配置后, 在它出现的地方, 就变成`delete`

编码

默认是使用当前的系统环境的编码, 可以配置为 GBK 或 UTF-8

<property name="javaFileEncoding" value="UTF-8"/>

我想项目为 UTF-8, 如果指定生成 GBK, 则自动生成的中文就是乱码。

格式化

<property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>

<property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>

这些显然都是可以自定义实现的的。

plugins标签

plugins 标签用来扩展或修改代码生成器生成的代码。

在生成的 XML 中, 是没有<cache> 这个标签的。该标签是配置缓存的。如果我们想生成这个标签, 那么可以 plugins 中进行配置。

<plugin type="org.mybatis.generator.plugins.CachePlugin" >
<property name="cache_eviction" value="LRU"/>
</plugin>

比如你想生成的 JavaBean 中自行实现 Serializable 接口。

<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />

还能自定义插件。

这些插件都蛮有用的, 感觉后续可以专门开一篇文章来讲解。看名称, 就知道是用来生成注释用的。

默认配置:

<commentGenerator >
<property name="suppressAllComments" value="false"/>
<property name="suppressDate" value="false"/>
<property name="addRemarkComments" value="false"/>
</commentGenerator >

 suppressAllComments: 阻止生成注释, 默认值是false。

suppressDate: 阻止生成的注释包含时间戳, 默认为false。

addRemarkComments: 注释中添加数据库的注释, 默认为 false。

还有一个就是我们可以通过      type    属性指定我们自定义的注解实现类,   生成我们自⼰想要的注解 。自定义的实现类需要 实现 org.mybatis.generator.api.CommentGenerator。

源码

https://github.com/homejim/mybatis-cn

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】图的简介(图的逻辑结构)

一.引例&#xff08;哥尼斯堡七桥问题&#xff09; 哥尼斯堡七桥问题是指在哥尼斯堡市&#xff08;今属俄罗斯&#xff09;的普雷格尔河&#xff08;Pregel River&#xff09;中&#xff0c;是否可以走遍每座桥一次且仅一次&#xff0c;最后回到起点的问题。这个问题被认为是图…

安全知识普及:什么是垃圾邮件和网络钓鱼欺诈

文章目录 什么是垃圾邮件&#xff1f;如何保护您自己免遭垃圾电子邮件和网络钓鱼侵害区分私人和公用电子邮件私人电子邮件公共电子邮件 使用反垃圾邮件过滤器推荐阅读 什么是垃圾邮件&#xff1f; 您的邮箱里经常会出现一些莫名其妙的邮件&#xff0c;而这就是电子形式的垃圾邮…

早晨暖心的早安问候语,祝好心情从清晨开始,愿你享受美好生活每一天!

1、冬天里&#xff0c;重调理&#xff1b;多锻炼&#xff0c;日光浴&#xff1b;早安睡&#xff0c;晚游历&#xff1b;勤开窗&#xff0c;通空气&#xff1b;暖腹背&#xff0c;寒不欺&#xff1b;适滋补&#xff0c;强体力&#xff1b;心乐观&#xff0c;无忧虑&#xff1b;温…

Java学习之路 —— 网络通信

文章目录 1. InetAddress2. UDP3. TCP4. 总结 1. InetAddress InetAddress的常用方法如下&#xff1a; public class InetAddressDemo {public static void main(String[] args) throws Exception{// 1. 获取本机IP地址对象InetAddress ip1 InetAddress.getLocalHost();Sys…

车间ERP管理系统都有哪些?能带给企业什么好处

不同规模的制造企业有不同的管理模式和经营策略&#xff0c;而生产和销售等业务是这类企业较为核心的部门&#xff0c;其中车间的管理是生产过程管理的重点环节之一。 车间的管理工作涉及物料、班组、设备、工时评估、生产现场数据采集、派工单、退补料等环节&#xff0c;如何…

2023年(第六届)电力机器人应用与创新发展论坛-核心PPT资料下载

一、峰会简介 大会以“聚焦电力机器人创新、助力行业数字化转型、促进产业链协同发展”为主题&#xff0c;展示电力机器人产业全景创新技术&#xff0c;探讨数字化战略下电力机器人应用前景和发展趋势。为加快推进电力机器人应用拓新&#xff0c;助力电网数字化转型升级&#…

吴恩达《机器学习》9-1:代价函数

一、引入新标记方法 首先&#xff0c;引入一些新的标记方法&#xff0c;以便更好地讨论神经网络的代价函数。考虑神经网络的训练样本&#xff0c;其中每个样本包含输入 x 和输出信号 y。我们用 L 表示神经网络的层数&#xff0c;表示每层的神经元个数&#xff08;表示输出层神…

C语言青蛙爬井(ZZULIOJ1072:青蛙爬井)

题目描述 有一口深度为high米的水井&#xff0c;井底有一只青蛙&#xff0c;它每天白天能够沿井壁向上爬up米&#xff0c;夜里则顺井壁向下滑down米&#xff0c;若青蛙从某个早晨开始向外爬&#xff0c;对于任意指定的high、up和down值&#xff08;均为自然数&#xff09;&…

如何解決開機後出現BitLocker修復畫面/取得BitLocker金鑰

[Notebook/Desktop/AIO] 疑難排解 - 如何解決開機後出現BitLocker修復畫面/取得BitLocker金鑰 如果您遇到開機進入系統後出現BitLocker修復畫面&#xff0c;這表示您電腦的硬碟已受BitLocker保護(硬碟被鎖住)。當系統在維修以及其他因素下做過硬體變動或BIOS更新設置變動&…

工业机器人“智能制造产线6”教学案例

​智能制造单元主要以智能制造技术推广应用实际与发展需求为设计依据&#xff0c;按照“设备自动化生产精益化管理信息化人工高效化”的构建理念&#xff0c;将数控加工设备、工业机器人、检测设备、数据信息采集管控设备等典型加工制造设备&#xff0c;集成为智能制造单元“硬…

MIUI解锁BL

解锁BL锁会清空手机数据!!! 解锁工具下载: http://www.miui.com/unlock/download.html 解压运行.exe文件 注意点: 手机绑定的账号与解锁工具登录的账号应是同一个账号 在Fastboot界面, 一直无法显示连接手机 USB3.0接口的问题, 巨坑!!! 解决方案参考下面第二篇文章 参考文…

阿里云崩了,总结我们从云上搬到线下经历了什么

我们做钢铁行业云的时候&#xff0c;也曾购买过某讯的云服务器。当时某讯做活动&#xff0c;头3年比较便宜&#xff0c;大概买了40台左右云服务器。 但是&#xff0c;3年期间使用云服务器的经历&#xff0c;体验并不好&#xff1a;1.我们云服务器的密码都是随机生成的&#xff…

怎么使用Cpolar+Lychee搭建私人图床网站并实现公网访问?

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站&#xff0c;可以看做是云存储的一部分&#xff0c;既可…

linuxTcp状态转换

1.TCP状态转换 在TCP进行三次握手&#xff0c;或者四次挥手的过程中&#xff0c;通信的服务器和客户端内部会发送状态上的变化&#xff0c;发生的状态变化在程序中是看不到的&#xff0c;这个状态的变化也不需要程序猿去维护&#xff0c;但是在某些情况下进行程序的调试会去查…

goland 远程调试 remote debug

1、远程服务器装好go环境&#xff0c;并设置国内源 linux go安装 参考&#xff1a; 如何在 Debian / Ubuntu 上安装 Go 开发环境 - 知乎 设置国内源 go env -w GOPROXYhttps://goproxy.cn,direct 2、远程服务器安装dlv git clone https://github.com/derekparker/delve.gi…

基于单片机体温脉搏检测控制系统及源程序

一、系统方案 1、本设计采用51单片机作为主控器。 2、DS18B20传感器检测体温。 3、红外对接管采集心率值送到液晶1602显示。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 /lcd1602初始化设置*/ void init_1602() { write_com(0x38); //显示…

【调研】通信原理课程虚拟教研室

项目来源 “十四五”教育发展规划有关部署&#xff1a;《教育部办公厅关于公布首批虚拟教研室建设试点名单的通知》&#xff08;教高厅函〔2022〕2号&#xff09;“虚拟教研室建设” 新任务&#xff1a;创新教研形态、加强教学研究、共建优质资源、开展教师培训等重点任务交流…

在c#中如何将多个点位(Point)转换为多边形(Polygon)并装换为shp图层

&#x1f47b;如图&#xff0c;我现在有一组经纬度点位Point&#xff0c;接下来我们将他装换为多边形Polygon格式 &#x1f47b;使用QGIS > 图层 > 添加图层 > 添加分隔文本图层 > 打开这个csv点位文件 &#x1f47b;打开后如左下图&#xff0c;csv文件中的四个点位…

【uniapp】Google Maps

话不多说 直接上干货 提前申请谷歌地图账号一、新建地图 使用h5获取当前定位或者使用三方uniapp插件 var coords ""navigator.geolocation.getCurrentPosition(function(position) {coords {lat: position.coords.latitude,lng: position.coords.longitude};lats …

Linux入门(三)

Linux grep 命令 1&#xff1a; 作用 ​ grep是一种文本搜索工具&#xff0c;它能使用特定的搜索模式&#xff0c;包括[正则表达式]搜索文本&#xff0c;并默认输出匹配行。 ​ windows类似的命令是findstr. 2&#xff1a;语法 grep -options&#xff08;参数&#xff09;…