当前位置: 首页 > news >正文

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配置文件的详细介绍

简单介绍&#xff1a; 需要我们编写的配置文件主要有三个&#xff0c;分别是核心配置文件&#xff08;mybatis-config.xml&#xff09;&#xff0c;数据库连接信息文件&#xff08;db.properties&#xff09;&#xff0c;SQL语句映射文件&#xff08;Mappers&#xff09;&…...

bwmarrin/snowflake生成ID重复问题排查记录

现象 某日&#xff0c;运营反馈&#xff0c;在某个时间区间丢失了一段日志&#xff0c;让看看是什么问题。 排查 查看项目日志有无错误 发现项目日志有报错信息Error 1062 Duplicate entry 149059529550598144 for key PRIMARY,很显然&#xff0c;问题在此&#xff0c;数据库…...

操作系统题目收录(十)

1、在存储管理中&#xff0c;采用覆盖与交换技术的目的是&#xff08;&#xff09;。 A&#xff1a;节省主存空间B&#xff1a;物理上扩充主存容量C&#xff1a;提高CPU效率D&#xff1a;实现主存共享 解析 覆盖和交换的提出就是为了解决主存空间不足的问题&#xff0c;但不…...

IOS 自动化测试环境搭建

购买MacPDD 比TB JD 便宜500&#xff0c;下单安装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…...

系统设计原则

系统设计原则 好的系统是迭代出来的。先解决核心问题&#xff0c;预测未来可能出现的问题&#xff0c;对现有的问题有方案&#xff0c;对未来的问题有预案。不是一上来就按1亿用户量设计&#xff0c;也不要过度复杂化系统。 业务千变万化&#xff0c;技术层出不穷&#xff0c…...

推荐130个网站,非常实用,比涨工资都重要

搞学习 TED&#xff08;最优质的演讲&#xff09;&#xff1a;https://www.ted.com/ 谷粉学术&#xff1a;https://gfsoso.99lb.net/scholar.html 大学资源网&#xff1a;http://www.dxzy163.com/ 简答题&#xff1a;http://www.jiandati.com/ 网易公开课&#xff1a;https…...

手机棋牌游戏开发的流程是怎样的?

最近几年&#xff0c;随着网络游戏的兴起&#xff0c;棋牌手游开发也越来越受欢迎&#xff0c;在国内&#xff0c;几乎随处可见从事手游和手游的公司。不过&#xff0c;虽然公司和产品很多&#xff0c;但效果也不一样&#xff0c;区别就在于&#xff0c;他们能不能掌握好这款游…...

浅谈C++函数重载

C相较于C语言来说,重载是一重大特性,让我们一起简单的回顾一下重载那些事 传送门函数重载是什么为什么有函数重载函数重载是如何实现的总结函数重载是什么 函数重载:是函数的一种特殊情况,C允许在同一作用域中声明几个功能相似的同名函数 这些同名函数的形参列表(参数个数or类…...

数据分析spss应急考试

数据分析spss应急考试 前言 单项选择 15(项)*2&#xff08;分&#xff09;30 判断题 10*1 10 计算题 2*10 案例分析题目(考实验内容) 总四十分&#xff0c;分值不等 老师重点强调了回归分析因子分析方差分析参数、非参数检验 2独立样本的非参数检验应该用什么方法多独立样本…...

Handler postDelayed的实现原理

Handler postDelayed的实现原理 问题描述 Handler.postDelayed()的原理是如何保证延时执行的&#xff1f; 扩展&#xff1a;这样实现的好处是什么&#xff1f; 题目分析 猜测一下 以我们对Handler的了解&#xff0c;内部使用了Looper对消息队列进行循环获取执行&#xff0…...

【数据结构】平衡二叉树

目录 一、平衡二叉树的介绍 二、平衡二叉树的插入 1、平衡二叉树的插入步骤 2、平衡二叉树的旋转 2.1左单旋 2.2右单旋 2.3左右双旋 2.4右左双旋 三、平衡二叉树的删除&#xff08;略&#xff09; 四、个人对平衡二叉树见解 五、平衡二叉树整体代码 一、平衡二叉树的…...

Minecraft服务端配置

✨✨前言 ✨✨ 我的世界大家肯定都不陌生&#xff0c;在网易拿下中国区的代理后&#xff0c;很多小伙伴也是都转向了网易版我的世界&#xff0c;网易版我的世界可以说已经做是的十分全面了&#xff0c;使用起来也十分方便&#xff0c;一部分小伙伴也是看重了网易庞大的玩家数量…...

yunUI组件库解析:图片上传与排序组件yImgPro

yunUI是笔者开源的微信小程序功能库。目前其中包含了一些复杂的功能组件。方便使用。未来它将分为组件、样式、js三者合为一体&#xff0c;但分别提供。 本文所用代码皆来源于组件库中的yImgPro组件。详细代码可至github查看。地址&#xff1a; yunUI 。 npm地址&#xff1a;yu…...

Java基础:回调函数

因为在看Android代码的时候发现了许多关于回调函数的知识, 所以去了解了一下. 对于我来说不太好懂, 因为我觉得看的那些博文的讲法对我来说很绕, 所以我在理解了之后想写一篇关于回调函数的博文来给和我一样理解能力稍差的人一点帮助. 回调函数的作用其实就是将需要这个功能的调…...

Springboot多环境配置

此文章是根据黑马程序员课程所做的笔记课程视频 多环境开发 ​ 什么是多环境&#xff1f;其实就是说你的电脑上写的程序最终要放到别人的服务器上去运行。每个计算机环境不一样&#xff0c;这就是多环境。常见的多环境开发主要兼顾3种环境设置&#xff0c;开发环境——自己用的…...

Java Number Math 类,超详细整理,适合新手入门

目录 一、什么是Java Number类&#xff1f; 二、Java Number类提供了哪些基本的数字操作&#xff1f; 三、什么是包装类&#xff1f; 所有的包装类都是抽象类 Number 的子类。 四、什么是Java Math 类 Test类案例&#xff1a;&#xff08;Math.PI 表示一个圆的周长与直径…...

俯瞰·明统系列·落霞与孤鹜齐飞、南征与北伐并举

尽江南百万兵&#xff0c;腰间宝剑血尤腥。 引言 元至正二十七年&#xff08;1367年&#xff09;四月&#xff0c;吴王朱元璋命中书右丞相徐达为征虏大将军、平章常遇春为副将军&#xff0c;率军25万由淮入河、北进中原&#xff08;第一次北伐&#xff09;。北伐中发布告北方官…...

Nodejs环境搭建和配置

Nodejs环境的搭建和配置 1、下载 官网&#xff1a;http://nodejs.cn/download/&#xff0c;选择windows64位 msi文件 2、安装和配置环境 双击安装之后&#xff0c;配置环境变量&#xff1a; ①系统变量那边创建NODE_PATH变量&#xff0c;值为nodejs文件夹的node_modules文…...

MybatisPlus------条件构造器Wrapper以及QueryWrapper用法(七)

MybatisPlus------条件构造器Wapper&#xff08;七&#xff09; Wrapper:条件构造器抽象类&#xff0c;最顶端父类 AbstarctWrapper&#xff1a;用于查询条件封装&#xff0c;生成sql的where条件。 QueryWrapper&#xff1a;查询条件封装&#xff08;可以用于查询、删除&#x…...

NetSuite Intercompany Framework 101

今朝&#xff0c;谈一谈Intercompany Framework&#xff0c;这是一个彰显NetSuite市场野心的基础功能框架。从20.2开始逐渐浮出水面&#xff0c;虽然经过过往的几个版本&#xff0c;不断推出组成功能&#xff0c;但目前仍然未见其全貌。 作为顾问&#xff0c;你必须关注它&…...

限时活动|凭徽章领披萨大奖,玩转Moonbeam治理论坛

动动手指&#xff0c;无需每天打卡&#xff0c;用刷手机的零碎时间领一份Web3惊喜&#xff01; 本次挑战的目标是鼓励大家参与社区治理、熟悉论坛操作。有关参与方式和原因的信息在Twitter上共享&#xff1a;有兴趣可以和ThinkWildCrypto一起探索论坛以解锁其功能、了解最近和正…...

Golang中struct{}和struct{}{}的区别你知道吗?

首先说下Golang中的结构体&#xff0c;结构体是由一系列具有相同类型或不同类型的数据构成的数据集合&#xff0c;Golang中使用关键字struct来创建一个结构体&#xff0c;语法如下&#xff1a;typeStudentstruct { Name string }下面定义一个Student结构体&#xff0c;例如&am…...

网络安全-信息收集- 谷歌浏览器插件收集信息,谷歌hacking搜索语法-带你玩不一样的搜索引擎

网络安全-信息收集- 谷歌浏览器插件收集信息&#xff0c;谷歌hacking搜索语法-带你玩不一样的搜索引擎 前言 一&#xff0c;我也是初学者记录的笔记 二&#xff0c;可能有错误的地方&#xff0c;请谨慎 三&#xff0c;欢迎各路大神指教 四&#xff0c;任何文章仅作为学习使用 …...

基础篇—一文掌握css的边框属性

CSS 边框属性 CSS边框属性允许你指定一个元素边框的样式和颜色。 1、边框样式 边框样式属性指定要显示什么样的边界。 border-style属性用来定义边框的样式 2、边框宽度 您可以通过 border-width 属性为边框指定宽度。 为边框指定宽度有两种方法:可以指定长度值,比如 2px…...

05服务发现:引入etcd服务注册中心

在分布式微服务架构中,服务注册发现组件(通常称为服务注册中心)往往有着举足轻重的作用,它的性能与稳定可能会直接影响到整个服务的状态,比如Spring Cloud中的Eureka、Dubbo中的Zookeeper等等,接下来我们就gRPC微服务中最常见的服务注册中心etcd,来讲述下两者在具体是怎…...

Pdfium.Net SDK 4.78.2704 完美Crack/Ptach

不限制时&#xff0c;/不限PDF体积、、、、、// version: 4.78.2704 | file size: 52.7 Mb Pdfium .Net SDK C# PDF 库 从头开始或从一堆扫描图像创建 PDF 编辑、合并、拆分和操作 PDF&#xff0c;提取文本和图像 嵌入独立的 Winforms 或 WPF PDF 查看器 支持&#xff1a;.Net…...

再学C语言38:指针操作

C提供了6种基本的指针操作 示例代码&#xff1a; #include <stdio.h>int main(void) {int arr[5] {1, 2, 3, 4, 5};int * p1, *p2, *p3;p1 arr; // 把一个地址赋给指针p2 &arr[2]; // 把一个地址赋给指针printf("指针指向的地址&#xff0c;指针指向地址中…...

【论文Word排版】使用多级列表设置论文序号

在Word中对论文进行排版 1.设置章节前面的序号 1.1 需求 通常情况下要求如下 一级标题“第一章 XXX”&#xff0c;然后是“1.1 研究意义”&#xff0c; “1.2 研究现状” 之前的处理方式都是手打&#xff0c;并没有借助word的多级列表实现。这次趁着写毕业论文研究了一下。…...

分支管理方案

背景 在工作的过程中&#xff0c;git管理方式已经成为每一个项目开发的基础&#xff0c;每个项目的开发都离不开git管理方式。 但是在使用的过程中&#xff0c;由于对git分支管理方案的了解不深&#xff0c;导致会出现分支管理不明确的情况。 本文主要是做科普作用&#xff…...

Allegro走线时如何自动关闭其它网络飞线显示操作指导

Allegro走线时如何自动关闭其它网络飞线显示操作指导 在做PCB设计的时候,尤其是在评估布线的时候,走某一个网络的时候,希望其它网络的飞线会被自动关闭,方便评估。 Allegro支持这个功能,如下图 走线前 走线后 具体操作如下 点击Route...

彩页设计网站/抖音关键词排名优化软件

redis的事务是以命令multi开始&#xff0c;然后执行若干redis读写命令&#xff0c;最后以exec命令结束执行。整个过程中&#xff0c;在还没有执行 exec 命令前的所有 redis 的业务读写命令都没有真正的执行&#xff0c;只是放在了一个队列中&#xff0c;等 exec 命令执行时&…...

个人网站 商城 备案/体验营销策略有哪些

引言 Point sprites&#xff0c;中文译成点精灵&#xff0c;是粒子系统的基础&#xff0c;本篇主要介绍point sprites的相关知识&#xff0c;为后续的粒子系统做准备。 Point Sprites&#xff08;点精灵&#xff09; Point sprites是DirectX8中引入的一个新特性&#xff0c;主要…...

昆山做网站找哪家好/企业如何注册自己的网站

目录&#xff1a; 1 网络请求API和封装 2 展示弹窗和页面分享 3 设备信息和位置信息 4 小程序Storage存储 5 页面跳转和数据传递 6 小程序登录流程演练 小程序的网络请求&#xff0c;不管是post还是get的请求的数据都是写在data里面的。 网络请求一般写在onLoad()的页面生…...

常熟网站建设哪家好/上海培训机构排名榜

3.1 Caching模式 Caching&#xff08;缓存&#xff09;模式描述了如何通过用完资源后不立刻释放资源来避免对资源的昂贵的重新获取。资源会维持它们的标识&#xff0c;并保留在某种可以快速访问的存储器中。它们可以被重用&#xff0c;从而避免了重新获取。 1.问题 对相同资源的…...

商标查询网站/短视频营销策划方案

一.冒泡排序 冒泡排序是运行最慢点排序算法&#xff0c;但是确实最简单的。 下图可以理解为队员排队。 遵循的规则&#xff1a; 1&#xff0e; 比较两个队员。 2&#xff0e; 如果左边的队员高&#xff0c;则两队员位置交换。 3&#xff0e; 向右移动一个位置&#xff0c;比较下…...

怎么做教育类型的网站/seo优化培训班

一、“平面设计”的内涵 • 所谓“平面设计”&#xff0c;指的是在平面空间上的设计活动&#xff0c;其设计的内容主要是在二维空间中各个元素的设计和这些元素组合的布局设计&#xff0c;其中包括字体设计、版面设计、插图、摄影的采用&#xff0c;而所有这些内容的核心在于传…...