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

news2024/12/24 9:15:54

在使用 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

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

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

相关文章

新版JetBrains ToolBox【Windows】修改应用安装位置

WIndows下新版的JetBrainse ToolBox 无法修改应用安装路径 关闭 ToolBox 应用修改配置文件.settings.json 路径&#xff1a;C:\Users\用户名\AppData\Local\JetBrains\Toolbox "install_location": "xxx",

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

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

LTD.com再度荣获“2023中国产业数字化技术赋能先锋”

2023年11月17日&#xff0c;由托比网主办的“第十届中国产业数字化大会”在江苏南京顺利召开。作为国内产业数字化领域的年度盛会&#xff0c;会议得到了江苏省商务厅、南京市政府的支持&#xff0c;由南京市商务局主办&#xff0c;南京鼓楼区政府提供特别支持。 会议在精彩的议…

vite+vue3+ts中watch和watchEffct的使用

vitevue3ts中watch和watchEffct的使用 本文目录 vitevue3ts中watch和watchEffct的使用watchrefreactivepropsimmediate组合监听 watchEffect单值多值侦听副作用停止监听 watch vue官方文档&#xff1a;https://cn.vuejs.org/api/reactivity-core.html#watch 可以监听基础类型&…

使用Docker部署Python Flask应用的完整教程

一、引言 Docker是一种开源的容器化平台&#xff0c;可以将应用程序及其依赖项打包成一个独立的容器&#xff0c;实现快速部署和跨平台运行。本文将详细介绍如何使用Docker来部署Python Flask应用程序&#xff0c;帮助开发者更高效地构建和部署应用。 二、准备工作 在开始之前…

Linux CentOS 8(DHCP的配置与管理)

Linux CentOS 8&#xff08;DHCP的配置与管理&#xff09; 目录 一、项目介绍二、DHCP服务简介三、DHCP工作原理四、配置DHCP服务4.1 项目配置准备4.2 dhcpd配置文件框架与参数说明4.3 登录客户机验证4.4 客户端IP地址的释放与重新申请4.5 保留特定IP地址 一、项目介绍 当计算…

【C++】容器string的构造函数和迭代器

目录 1 什么是string 2 迭代器 2.1 迭代器的使用 2.2 auto关键字以及代码可读性 3 构造函数 1 什么是string 上图是C官网对于string的解释&#xff1a;string是表示字符序列的对象。 string本质是一个类&#xff0c;位于std的命名空间下&#xff0c;使用前需要包含头文件…

基于乌燕鸥算法优化概率神经网络PNN的分类预测 - 附代码

基于乌燕鸥算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于乌燕鸥算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于乌燕鸥优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络…

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

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

【STM32】CRC(循环冗余校验)

一、CRC的背景知识 1、什么是CRC (1)CRC&#xff08;Cyclic Redundancy Check&#xff09;&#xff0c;循环冗余校验 (2)什么是校验&#xff0c;为什么需要校验&#xff1a;数据传输&#xff0c;数据存储过程中需要使用到的 (3)什么是冗余&#xff1a;表示比实际上要传输的数据…

【Unity小技巧】图片使用的一些常见问题

文章目录 前言Button不规则按钮点击空白区域不响应点击事件1. 设置资源参数2. 代码设置按钮Image的alphaHitTestMinimumThreshold3. 解释&#xff1a;4. 效果 Unity Image 原图比例控制方法一 Preserve Aspect1. 设置勾选Preserve Aspect&#xff08;保持长宽比&#xff09;&am…

docker删除镜像命令

在Docker中删除镜像的命令是 docker rmi。这个命令用于删除一个或多个Docker镜像。使用这个命令时&#xff0c;你需要指定要删除的镜像的ID或名称。以下是一些常用的用法&#xff1a; 删除单个镜像&#xff1a; docker rmi [IMAGE_ID或REPOSITORY:TAG]例如&#xff0c;如果你知…

【OpenAI开发者大会,全新大模型它来了,价格大跌...】

继今年春天发布 GPT-4 之后&#xff0c;OpenAI 又创造了一个不眠夜。 过去一年&#xff0c;ChatGPT 绝对是整个科技领域最热的词汇。 北京时间 11 月 7 日凌晨 02:00&#xff0c;OpenAI 的首次 DevDay 开发者日活动正式开始。Keynote 主论坛环节由 Sam Altman 主讲并在油管现…

Reflect的作用,target,property,value,receiver代表啥

1.真的proxy let target {name:张三} let handler {get(target,property,receiver){console.log(1,target,2,property,3,receiver)return Reflect.get(target,property,receiver)},set(target,property,value,receiver){console.log(a,target,b,property,c,value,d,receiver)…

vue3安装vue-router

环境 node 18.14.2 yarn 1.22.19 windows 11 vite快速创建vue项目 参考 安装vue-touter 官网 yarn add vue-router4src下新建router文件夹&#xff0c;该文件夹下新建index.ts // router/index.ts 文件 import { createRouter, createWebHashHistory, RouterOptions, Ro…

【139.单词拆分】

目录 一、题目解析二、算法原理三、代码实现 一、题目解析 二、算法原理 三、代码实现 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {int n s.size();unordered_set<string> hash;for (auto x : wordDict) hash.insert(x);…

动态sql行转列

动态sql行转列 介绍案例转之前转之后 注意 介绍 本篇介绍 根据 时间格式化后行转列的案例讲解动态sql案例的初学 案例 --设置一个动态变量 赋予初始值 SET sql NULL;--获取规范化后需要用到的行头列表 SELECT GROUP_CONCAT(CONCAT(--注意1MAX(IF(date ", date, "…

Eclipse使用配置tomcat服务:Server配置

目标&#xff1a; 在Eclipse中&#xff0c;默认会把Web项目放到Eclipse的工作空间下 的.metadata\.plugins\org.eclipse.wst.server.core\tmp0(或者是tmp1)\wtpwebapps\下 &#xff0c;如果现在Eclipse中有名为imsmanagere的项目&#xff0c;将它按以前的方式部署到服务器上&am…

揭示CDN加速的局限性与探讨其小众化原因

在网络加速领域&#xff0c;CDN&#xff08;内容分发网络&#xff09;被认为是提升性能的关键技术之一。然而&#xff0c;尽管其在某些方面表现出色&#xff0c;CDN在广泛应用中仍然相对小众。本文将从CDN加速的局限性出发&#xff0c;深入探讨为何这项技术尚未迎来大规模的应用…

【网络安全】伪装IP网络攻击的识别方法

随着互联网的普及和数字化进程的加速&#xff0c;网络攻击事件屡见不鲜。其中&#xff0c;伪装IP的网络攻击是一种较为常见的攻击方式。为了保护网络安全&#xff0c;我们需要了解如何识别和防范这种攻击。 一、伪装IP网络攻击的概念 伪装IP网络攻击是指攻击者通过篡改、伪造I…