JavaEE——MyBatis配置文件的详细介绍
简单介绍:
需要我们编写的配置文件主要有三个,分别是核心配置文件(mybatis-config.xml),数据库连接信息文件(db.properties),SQL语句映射文件(Mappers);这些配置文件大多数都是以xml文件的形式进行编写的,所以其中包含了很多的标签,也称为他们的元素,之前我们只是从官网复制这些文件的模板文件并进行简单的修改进行使用,并不知道这些文件的中的元素的具体含义,那么接下来就是对这些文件中出现过的那些元素进行比较详细的讲解。
数据库连接信息文件db.propertioes文件:
这个文件存放的是关于数据库连接相关的信息,其中常用的有driver,url,username,password的配置信息,如果之前配置过数据库连接池,会发现这个配置文件在数据库连接池中也出现过。
这种以propertioes文件结尾的文件的数据存储形式是以键值对的形式存放,是以键等于值的形式存储。所以当我们在其他的文件中引用这种文件的时候只需要在需要值的地方动态的引用她的键就可以,非常的方便维护和修改。
下面是正常的简单配置数据库连接信息的文件:

核心配置文件mybatis-config.xml:
mybatis的核心配置文件配置了mybatis的全局信息,以及能够修改默认行为的属性。
mybatis的核心配置文件的主要元素如下:

其中<configuration>元素是所有元素的根元素,所有的元素都要写在它下面。并且这些元素的顺序不能乱写,一定要根据上面的顺序从上到下开始编写,否则在编写配置文件的时候会报错:

不过也不同特意的去记住这些元素的顺序,在我们报错之后,他会提醒我们正确的顺序并且告诉我们是哪一个元素的位置错了,我们只需要对照修改就可以了。
接下来我们就比较详细的介绍一下这些每一个元素:
<properties>:
该元素的作用是将外部的配置文件引入到此配置文件中。
比如我们的数据库连接信息文件都是存放在db.properties文件中,我们就可以使用这个元素引入这个文件,然后在需要db.properties文件中信息的地方使用动态引入的方式。

动态引入的语法为:${key}
<settings>:
这个元素的作用是改变MyBatis运行时候的行为,比如开启二级缓存,开启延时加载,懒加载等。
关于这个标签的作用我们在之后学习过缓存机制和懒加载机制之后再深入了解这个标签的作用
<typeAliases>:别名映射
在我们将查询结果集输出到一个Java的实体类的时候,需要在resultType中输入实体类的全限定类名,即必须写入完整的包名和类名,但是在我们的开发中,有一些包名就非常的长,写起来很麻烦而且也很容易就写错。这个标签的作用就是帮我们简化这个写法,在配置完成之后,我们就可以简化为直接写实体类的类名的方式就可以了。

当我们映射的实体类有多个的时候,可以配置多个标签来达到效果:

当我们映射的实体类非常多的时候,一个一个的写就非常的麻烦,这时候我们就可以以包扫描器的方式来添加我们的别名映射:
当我们进行这样的配置之后,当我们需要这个包下面的实体类进行映射的时候,都可以直接写类名就可以进行自动映射
<typeHandlers>:
<objectFacetory>:
<plugins>:
<environments>:
MyBatis支持配置多套运行环境,比如开发环境,生产环境,测试环境等;可以灵活的选择不同的配置,从而将SQL映射到不同运行环境的数据库中。
<enbironment>
不同的运行环境可以通过<environment>子元素来配置,但是不管有多少套运行环境,都必须要明确选择出当钱要用的唯一的一个运行环境。
MyBatis的运行环境信息包括事务管理器和数据源。通过<environment>的两个子元素,<transactionManger>来配置运行环境的事务管理器,<dataSource>元素用来配置环境的数据源信息。
<transactionManager>:
<transactionManger>来配置运行环境的事务管理器,可以配置两种类型的事务管理器,其中一种是JDBC:直接使用JDBC的提交和回滚设置,依赖于从数据源得到的连接来管理事务的作用域。还有一种是MANAGED:此配置不提交或回滚一个链接,而是让容器来管理事务的整个生命周期。
如果项目使用的是Spring+MyBatis,则没有必要在MyBatis中配置事务管理器,因为在实际开发中会使用Spring自带的管理器来实现事务的管理。
<dataScurce>:
<dataSource>元素用来配置环境的数据源信息。对于数据源的配置,MyBatis提供了三种数据源类型,分别是:
UNPOOLED:表示数据源为无连接池类型。适用于对性能要求不高的简单应用程序
POOLED:表示数据源为连接池属性。POOLED使并发Web应用可以快速响应请求,是当前比较流行的数据源配置类型。
JNDI:表示数据源可以在FJB或应用服务器容器中使用。

切换运行环境的方法:
一种是通过更改<environments>的default属性的值的方式来切换运行那一套环境
还有一种就是在编程的时候,将SqlSessionFactoryBuilder()方法的第二个参数修改成运行环境id的值的方式来切换运行环境:

<mappers>:引入映射文件
在MyBatis的核心配置文件中,<mappers>用于引入MyBatis映射文件。映射文件包含了POJO对象和数据表之前的映射关系,MyBatis通过核心配置文件中的<mappers>元素找到映射文件并解析其中的映射关系

使用<mappers>引入映射文件的方式有四种:
1.使用类路径引入:

2.使用本地文件路径引入:

3.使用接口类引入:
使用接口类引入需要提前准备一个和映射文件同一个包下面的接口,并且接口名必须与文件名相同,且接口中的方法名与映射文件中的唯一标识的名字相同,在下一章的接口化开发中会详细的介绍这种方法的使用:

4.使用包名导入

SQL语句映射文件:
MyBatis真正强大的地方是可以配置SQL映射文件。
SQL语句映射文件的常用元素:
<mappers>:
mappers元素是映射文件的根元素,其他元素都是她的子元素。mappers有一个属性叫做namespace,类似于我们的包,是用来当SQL映射的id属性相同时区分SQL映射的。
<cache>:
配置给定命名空间的缓存
<chache-ref>:
从其他命名空间引用缓存配置
<select>:
用于映射查询语句,它可以从数据库中查询数据并返回。它有四个常用的属性,idSQL语句的唯一标识,parametType表示参数的类型,resultType表示查询结果集映射到的POJO实体类的全限定类型,如果之前配置了类名映射,可以直接写类名。
<insert>:
<insert>用于映射插入语句,在执行完<insert>元素中定义的SQL语句后,会返回插入记录的数量。该元素有两个常用属性,id表示SQL语句的唯一标识,parameterType表示数据来源的POJO实体类。
注意在使用的时候,插入数据的时候要使用动态引入的方式,因为数据来源是来自于POJO的实体类,所以要动态的引入实体类中的属性的名称

<update>:
<update>用于映射更新语句,它可以更新数据库中的数据,在执行完元素中定义的SQL语句之后,会返回更新的记录数量。

<delete>:
<delete>用来映射删除语句,在执行完<delete>元素中的SQL语句之后,会返回删除的记录数量。

还有<sql>和<resultMap>属性由于比较的常用和重要我们在下一章节进行单独的讲解
相关文章:
JavaEE——MyBatis配置文件的详细介绍
简单介绍: 需要我们编写的配置文件主要有三个,分别是核心配置文件(mybatis-config.xml),数据库连接信息文件(db.properties),SQL语句映射文件(Mappers)&…...
bwmarrin/snowflake生成ID重复问题排查记录
现象 某日,运营反馈,在某个时间区间丢失了一段日志,让看看是什么问题。 排查 查看项目日志有无错误 发现项目日志有报错信息Error 1062 Duplicate entry 149059529550598144 for key PRIMARY,很显然,问题在此,数据库…...
操作系统题目收录(十)
1、在存储管理中,采用覆盖与交换技术的目的是()。 A:节省主存空间B:物理上扩充主存容量C:提高CPU效率D:实现主存共享 解析 覆盖和交换的提出就是为了解决主存空间不足的问题,但不…...
IOS 自动化测试环境搭建
购买MacPDD 比TB JD 便宜500,下单安装homebrew/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"安装npm cnpmbrew install node; npm install -g cnpm --registryhttps://registry.npm.taobao.org;安装类似Andro…...
系统设计原则
系统设计原则 好的系统是迭代出来的。先解决核心问题,预测未来可能出现的问题,对现有的问题有方案,对未来的问题有预案。不是一上来就按1亿用户量设计,也不要过度复杂化系统。 业务千变万化,技术层出不穷,…...
推荐130个网站,非常实用,比涨工资都重要
搞学习 TED(最优质的演讲):https://www.ted.com/ 谷粉学术:https://gfsoso.99lb.net/scholar.html 大学资源网:http://www.dxzy163.com/ 简答题:http://www.jiandati.com/ 网易公开课:https…...
手机棋牌游戏开发的流程是怎样的?
最近几年,随着网络游戏的兴起,棋牌手游开发也越来越受欢迎,在国内,几乎随处可见从事手游和手游的公司。不过,虽然公司和产品很多,但效果也不一样,区别就在于,他们能不能掌握好这款游…...
浅谈C++函数重载
C相较于C语言来说,重载是一重大特性,让我们一起简单的回顾一下重载那些事 传送门函数重载是什么为什么有函数重载函数重载是如何实现的总结函数重载是什么 函数重载:是函数的一种特殊情况,C允许在同一作用域中声明几个功能相似的同名函数 这些同名函数的形参列表(参数个数or类…...
数据分析spss应急考试
数据分析spss应急考试 前言 单项选择 15(项)*2(分)30 判断题 10*1 10 计算题 2*10 案例分析题目(考实验内容) 总四十分,分值不等 老师重点强调了回归分析因子分析方差分析参数、非参数检验 2独立样本的非参数检验应该用什么方法多独立样本…...
Handler postDelayed的实现原理
Handler postDelayed的实现原理 问题描述 Handler.postDelayed()的原理是如何保证延时执行的? 扩展:这样实现的好处是什么? 题目分析 猜测一下 以我们对Handler的了解,内部使用了Looper对消息队列进行循环获取执行࿰…...
【数据结构】平衡二叉树
目录 一、平衡二叉树的介绍 二、平衡二叉树的插入 1、平衡二叉树的插入步骤 2、平衡二叉树的旋转 2.1左单旋 2.2右单旋 2.3左右双旋 2.4右左双旋 三、平衡二叉树的删除(略) 四、个人对平衡二叉树见解 五、平衡二叉树整体代码 一、平衡二叉树的…...
Minecraft服务端配置
✨✨前言 ✨✨ 我的世界大家肯定都不陌生,在网易拿下中国区的代理后,很多小伙伴也是都转向了网易版我的世界,网易版我的世界可以说已经做是的十分全面了,使用起来也十分方便,一部分小伙伴也是看重了网易庞大的玩家数量…...
yunUI组件库解析:图片上传与排序组件yImgPro
yunUI是笔者开源的微信小程序功能库。目前其中包含了一些复杂的功能组件。方便使用。未来它将分为组件、样式、js三者合为一体,但分别提供。 本文所用代码皆来源于组件库中的yImgPro组件。详细代码可至github查看。地址: yunUI 。 npm地址:yu…...
Java基础:回调函数
因为在看Android代码的时候发现了许多关于回调函数的知识, 所以去了解了一下. 对于我来说不太好懂, 因为我觉得看的那些博文的讲法对我来说很绕, 所以我在理解了之后想写一篇关于回调函数的博文来给和我一样理解能力稍差的人一点帮助. 回调函数的作用其实就是将需要这个功能的调…...
Springboot多环境配置
此文章是根据黑马程序员课程所做的笔记课程视频 多环境开发 什么是多环境?其实就是说你的电脑上写的程序最终要放到别人的服务器上去运行。每个计算机环境不一样,这就是多环境。常见的多环境开发主要兼顾3种环境设置,开发环境——自己用的…...
Java Number Math 类,超详细整理,适合新手入门
目录 一、什么是Java Number类? 二、Java Number类提供了哪些基本的数字操作? 三、什么是包装类? 所有的包装类都是抽象类 Number 的子类。 四、什么是Java Math 类 Test类案例:(Math.PI 表示一个圆的周长与直径…...
俯瞰·明统系列·落霞与孤鹜齐飞、南征与北伐并举
尽江南百万兵,腰间宝剑血尤腥。 引言 元至正二十七年(1367年)四月,吴王朱元璋命中书右丞相徐达为征虏大将军、平章常遇春为副将军,率军25万由淮入河、北进中原(第一次北伐)。北伐中发布告北方官…...
Nodejs环境搭建和配置
Nodejs环境的搭建和配置 1、下载 官网:http://nodejs.cn/download/,选择windows64位 msi文件 2、安装和配置环境 双击安装之后,配置环境变量: ①系统变量那边创建NODE_PATH变量,值为nodejs文件夹的node_modules文…...
MybatisPlus------条件构造器Wrapper以及QueryWrapper用法(七)
MybatisPlus------条件构造器Wapper(七) Wrapper:条件构造器抽象类,最顶端父类 AbstarctWrapper:用于查询条件封装,生成sql的where条件。 QueryWrapper:查询条件封装(可以用于查询、删除&#x…...
NetSuite Intercompany Framework 101
今朝,谈一谈Intercompany Framework,这是一个彰显NetSuite市场野心的基础功能框架。从20.2开始逐渐浮出水面,虽然经过过往的几个版本,不断推出组成功能,但目前仍然未见其全貌。 作为顾问,你必须关注它&…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
