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开始逐渐浮出水面,虽然经过过往的几个版本,不断推出组成功能,但目前仍然未见其全貌。 作为顾问,你必须关注它&…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
