MyBatis配置

news2025/1/27 12:51:17

配置结构

属性(properties)

属性不仅可以在内部直接修改,还可以在外部引入,外部引入需要在配置文件引入属性的文件,

db.properties放在资源目录下面,然后在configuration标签下面导入外部配置的properties文件

 

设置(settings)

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。

这里介绍一个重要的设置

  • 日志

 如果遇到bug,可以配置日志文件,可以程序的执行流程

<settings>
  <setting name="logImpl" value="STDOUT_LOGGING "/>
</settings>

在xml配置文件中设置好日志之后,就可以使用;如果需要配置log.4g日志,还需要配置log4j.properties

类型别名(typeAliases)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。例如:

<typeAliases>
  <typeAlias alias="Author" type="domain.blog.Author"/>
</typeAliases>

type是包名,alias是别名,当设置了别名,在命名空间(namespace)上放入别名即可,这样就简便了,当这样配置时,Author可以用在任何使用 domain.blog.Author的地方。

环境配置(environments)

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。

不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。

所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推

environments 元素定义了如何配置环境。下面是配置数据源和配置数据管理器

<environments default="development">
  <environment id="development">
    <transactionManager type="JDBC">
      <property name="..." value="..."/>
    </transactionManager>
    <dataSource type="POOLED">
      <property name="driver" value="${driver}"/>
      <property name="url" value="${url}"/>
      <property name="username" value="${username}"/>
      <property name="password" value="${password}"/>
    </dataSource>
  </environment>
</environments>

注意一些关键点:

  • 默认使用的环境 ID(比如:default="development")。
  • 每个 environment 元素定义的环境 ID(比如:id="development")。
  • 事务管理器的配置(比如:type="JDBC")。
  • 数据源的配置(比如:type="POOLED")。

默认环境和环境 ID 顾名思义。 环境可以随意命名,但务必保证默认的环境 ID 要匹配其中一个环境 ID。

事务管理器(transactionManager)

在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):

  • JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
  • MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。例如:
<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

这里需要注意的是,JDBC连接数据库的事务提交和回滚,查询数据,不需要提交数据;增删改需要提交数据,增删改不提交事务,能执行成功,但是数据库不会显示数据,所以必须提交;

数据源(dataSource)

三种数据源

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

  • 大多数 MyBatis 应用程序会按示例中的例子来配置数据源。虽然数据源配置是可选的,但如果要启用延迟加载特性,就必须配置数据源。

有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]")

映射器(mappers)

四种映射方式

既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要来定义 SQL 映射语句了。 但首先,我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等。例如:

第一种:使用相对于类路径的资源引用

<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>

第二种:使用完全限定资源定位符

<!-- 使用完全限定资源定位符(URL) -->
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
  <mapper url="file:///var/mappers/BlogMapper.xml"/>
  <mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>

第三种:使用映射器接口实现类的完全限定类名

<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  <mapper class="org.mybatis.builder.BlogMapper"/>
  <mapper class="org.mybatis.builder.PostMapper"/>
</mappers>

第四种:将包名的映射器接口实现全部注册为映射器

<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>

这四种映射方式是在注册mapper.xml或绑定接口,因为这个文件通过namespace跟接口绑定了,所以目的就是查询数据库的语句

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

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

相关文章

Kali linux ssh Permission denied, please try again解决

新装的kali 没有ssh 装上ssh后root用户禁止登录所以要修改ssh配置&#xff0c;下面就这个过程解决全部演示。 默认情况下 SSH 不允许以 root 用户登录&#xff0c;因此将会出现下面的错误提示信息&#xff1a; Permission denied, please try again.kali linux 默认没有ssh,因此…

股票量价关系基础知识5

图解各阶段量价关系&#xff1a;价涨量增 价涨量增是指股价上涨的同时成交量也放大。它是最常见的多头进攻模式&#xff0c;说明价量配合良好&#xff0c;反映投资者买卖情绪高涨。成交量放大说明有资金流入&#xff0c;做多力量增强&#xff0c;后市看涨。 注意&#xff1a;1…

yolov5 用自己的数据集进行训练

在训练之前先要按照一定目录格式准备数据&#xff1a; VOC标签格式转yolo格式并划分训练集和测试集_爱钓鱼的歪猴的博客-CSDN博客 目录 1、修改数据配置文件 2、修改模型配置文件 3、训练 1、修改数据配置文件 coco.yaml 拷贝data/scripts/coco.yaml文件&#xff0c; pa…

requset页面的代码逻辑

基地址 &#xff1a; //引入axios import axios from axios; //vuex // import store from ../store/index; //配置基准地址 const Serve axios.create({baseURL: http://47.99.166.157:3000,// transformRequest: [function (data) {// try {// return jsonBig.…

【python】无限量PPT免费下载?找模板在不怕心仪得不能用啦

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 开发环境: python 3.8 pycharm 不会安装的可以文末名片我获取哦 &#x1f60e; 模块使用: 第三方模块&#xff0c;需要安装 win R 输入cmd 输入安装命令 pip install 模块名 &#xff08;如果出现爆红 可能是因为 网络…

5分钟搞懂矩阵乘法的本质

大家好啊&#xff0c;我是董董灿。 很多与深度学习算法相关的面试&#xff0c;面试官可能都会问一类问题&#xff0c;那就是你是如何理解矩阵乘算法的。 更有甚者&#xff0c;会让你当场手写矩阵乘算法&#xff0c;然后问细节&#xff0c;问如何优化&#xff0c;面试现场&…

【MATLAB第31期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理方法MATLAB代码实现(持续更新)

【MATLAB第31期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理方法MATLAB代码实现(持续更新) 一、降维方法 常见的降维方法&#xff1a; 1.变量归类&#xff08;主成分分析PCA、核主成分分析KPCA&#xff09; 2.变量筛选&#xff08;临近成分分析NCA、皮尔逊系数PCC、…

签名预售活动圆满结束!各位敬等快递,第一个付款的兄弟来领取大礼!

我的新书经过千难万险终于上架&#xff0c; 为了感谢众多老铁的支持&#xff0c; 所以上周日搞了签名预售的活动&#xff0c;挂了300本&#xff0c; 一上线很快就被大家买光了&#xff0c; 留言需要单独写一些话的老铁&#xff0c;我也都尽量满足了&#xff0c; 如果一楼还…

HNU-操作系统OS-实验Lab5

OS_Lab5_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf &#xff08;学号 202108010XXX&#xff09; 实验目的 了解第一个用户进程创建过程了解系统调用框架的实现机制了解ucore如何实现系统调用sys_fork/sys_exec/sys_exit/sys_wait来进行进程管理 实验…

计算机组成原理基础练习题第一章

有些计算机将一部分软件永恒地存于只读存储器中&#xff0c;称之为&#xff08;&#xff09; A.硬件    B.软件C.固件    D.辅助存储器输入、输出装置以及外界的辅助存储器称为&#xff08;&#xff09; A.操作系统    B.存储器 C.主机      D.外围设备完整的计算机系…

算法时间空间复杂度

文章目录 算法算法特性 时间复杂度时间复杂度概念算法运行时间例如时间复杂度分三种 空间复杂度 算法 算法特性 1.有穷性&#xff1a;执行有穷步&#xff08;有限步&#xff09;之后结束。 2.确定性&#xff1a;只有唯一的执行路径。 3.可行性&#xff1a;代码可以执行起来…

2023年数维杯ABC选题人数公布

根据各个平台开赛后28小时各项数据统计&#xff0c;进行评估&#xff08;方法见注释&#xff09;&#xff0c;最终得出2023年数维杯选题人数&#xff0c;大致为 A:B:C260&#xff1a;281&#xff1a;40 题号选题人数A260B281C40 选题人数统计结果分析&#xff1a;AB为研究生本…

vue3开启大海贼时代!!!

大海贼时代结束&#xff01;&#xff01;&#xff01; vue3开始&#xff01;&#xff01;&#xff01; setup初体验 1.与vue2不同的是 定义的变量和方法都被放到一个叫 setup( )里面了 2.vue2里面没有了 this 3. 1&#xff09;访问变量先定义 const msg 1 2&#xff0…

[架构之路-196] - 发现问题原因的通常步骤:提出问题、明确问题、偏差分析、因素分析、原因分析

目录 前言&#xff1a; 通用问题的方法论 第一步&#xff1a;是提出问题阶段&#xff1a;表象、总体、大致 第二步&#xff1a;是明确问题阶段&#xff08;深层&#xff09;&#xff1a;分解、分类、排序 第三步&#xff1a;是明确问题阶段&#xff08;目标&#xff09;&a…

关于一个C++项目:高并发内存池的开发过程(一)

原项目地址&#xff1a;高并发内存池项目: 高并发内存池项目的课堂板书代码 (gitee.com) 写在前面 本打算利用五一假期的时间将这个项目一口气开发完成&#xff0c;但由于本人的懈怠&#xff0c;这个项目最终只完成了80%。于是利用长假后的一天假期&#xff0c;将这个项目的框…

springboot整合security,mybatisPlus,thymeleaf实现登录认证及用户,菜单,角色权限管理

介绍 本系统为springboot整合security&#xff0c;mybatisPlus&#xff0c;thymeleaf实现登录认证及用户&#xff0c;菜单&#xff0c;角色权限管理。页面为极简模式&#xff0c;没有任何渲染。 源码&#xff1a;https://gitee.com/qfp17393120407/spring-boot_thymeleaf 开发…

算法训练Day59:503.下一个更大元素II 42. 接雨水

文章目录 [下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/description/)题解 接雨水题解 下一个更大元素 II CategoryDifficultyLikesDislikesContestSlugProblemIndexScorealgorithmsMedium (66.68%)8060--0 Tags 堆 | 数组 | 单调栈 Compani…

企业信息化战略与实战(三)-企业信息化与电子商务概念

上面我们了解了政府信息化与企业信息化的部分概念,今天继续了解企业信息化的相关概念和电子商务相关概念。 1、决策支持系统(DSS) 了解基本理念和组成部分即可. 决策支持系统的作用一般是供决策,做辅助用途的系统,当你做一个决策的时候,你可以需要给你的决策做支持。比如…

05- redis集群模式搭建(上) (包含云服务器[填坑])

目录 1. 准备环境: 2. 简介: -> 2.1 前言: -> 2.2 Redis集群架构实现了对redis的水平扩容 -> 2.3 redis cluster集群原理 3. 搭建后特别需要注意的问题 ->3.1 [重点]: 如果一个服务出现故障: 是否可以继续提供服务??? ---> 3.1.1 如果集群中故障re…

PCIe的capability扩展空间字段解释

解释 这是一段关于高级错误报告的信息&#xff0c;其中包含多个字段和值。以下是每个字段的详细解释&#xff1a; Capabilities: [100 v1] Advanced Error Reporting 这是该设备支持高级错误报告的能力标识符。 UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- R…