常见配置

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 本文介绍MyBatis常见配置,包括属性加载优先级(方法参数 > resource/url > properties)、核心配置项如缓存、延迟加载、执行器类型等,并讲解多环境配置方式及事务管理机制(JDBC与MANAGED),适用于多数据源场景。结合官网API,帮助开发者高效配置MyBatis。

1.常见配置
1.前言
mybatis官网Java-api地址:https://mybatis.org/mybatis-3/zh/java-api.html
2.常见配置
如果一个属性不止在一个地方进行配置,那么mybatis将按照下面顺序进行加载
首先读取properties元素体内的属性
然后根据properties元素中的resource属性读取类路径下属性文件,或根据url属性指定的路径读取属性文件,并覆盖之前读取过的同名属性
最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性
因此,优先级顺序:方法参数传递的属性>resource/url属性中配置>properties元素中指定属性
2.1 几个常见配置属性
设置名
描述
有效值
默认值
cacheEnabled
全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。
true | false
true
lazyLoadingEnabled
延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态。
true | false
false
useGeneratedKeys
允许 JDBC 支持自动生成主键,需要数据库驱动支持。如果设置为 true,将强制使用自动生成主键。尽管一些数据库驱动不支持此特性,但仍可正常工作(如 Derby)。
true | false
False
defaultExecutorType
配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(PreparedStatement); BATCH 执行器不仅重用语句还会执行批量更新。
SIMPLE REUSE
BATCH
SIMPLE
localCacheScope
MyBatis 利用本地缓存机制(Local Cache)防止循环引用和加速重复的嵌套查询。 默认值为 SESSION,会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地缓存将仅用于执行语句,对相同 SqlSession 的不同查询将不会进行缓存。
SESSION STATEMENT
SESSION
proxyFactory
指定 Mybatis 创建可延迟加载对象所用到的代理工具。
CGLIB | JAVASSIST
JAVASSIST (3.3 以上)
2.2 多环境配置
多个数据源,就创建多个SqlSessionFactory,每个对应一个数据库
为了指定创建哪种环境,只要将它作为可选的参数传递给 SqlSessionFactoryBuilder 即可。可以接受环境配置的两个方法签名是:
Java
运行代码
复制代码
1
2
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, properties);
如果忽略了环境参数,那么将会加载默认环境,如下所示:
Java
运行代码
复制代码
1
2
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, properties);
environments 元素定义了如何配置环境:
XML
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13














几个关键点:
默认使用的环境 ID(比如:default="development")。
每个 environment 元素定义的环境 ID(比如:id="development")。
事务管理器的配置(比如:type="JDBC")。
数据源的配置(比如:type="POOLED")。
默认环境和环境 ID 顾名思义。 环境可以随意命名,但务必保证默认的环境 ID 要匹配其中一个环境 ID。
3 事务管理
1 JDBC
这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域
2 MANAGED
它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。
注意:
如果用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。这两种事务管理器类型都不需要设置任何属性。

相关文章
|
Unix Linux 程序员
Linux必知词汇:GNU通用公共许可证 GPL(GNU General Public License)
Linux必知词汇:GNU通用公共许可证 GPL(GNU General Public License)
3453 0
|
17天前
|
算法 安全 测试技术
多智能体协同中的任务拆解与动作映射:关键指标对比与算法设计思路
本文聚焦2026年企业级多智能体落地核心瓶颈——任务拆解不准与语义到动作映射断层,提出“分层级树状拆解+分布式角色调度”算法及五维特征驱动的动作映射技术,构建可评估、可复用、强合规的工程化方案,并通过实测数据验证其在跨系统长链路任务中96.2%执行成功率与92.3%异常自修复率。
|
6月前
|
NoSQL IDE MongoDB
Studio 3T 2025.21 发布 - MongoDB 的终极 GUI、IDE 和 客户端
Studio 3T 2025.21 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
262 2
Studio 3T 2025.21 发布 - MongoDB 的终极 GUI、IDE 和 客户端
|
2月前
|
消息中间件 存储 Java
消息队列选型终极指南:Kafka、RocketMQ、RabbitMQ 底层原理与场景化选型全解
本文深度解析消息队列核心原理与三大主流MQ(RabbitMQ、RocketMQ、Kafka)的架构、特性、代码实现及选型策略。涵盖异步解耦、流量削峰、数据分发三大价值,At-most/least/exactly-once投递语义,推拉模式差异,事务消息实现对比,并提供场景化选型指南与生产避坑实践。
397 1
|
4月前
|
运维 Kubernetes Docker
K8s集群异常Pod高效排查命令(kube-system核心场景)
本文介绍一条专为K8s容器化集群设计的“一站式”异常Pod排查命令。它通过`docker exec`进入K8s核心容器,执行`kubectl get pod -A`并反向过滤正常状态(如1/1、2/2),快速定位`kube-system`等关键命名空间中就绪异常的Pod,解决步骤繁琐、筛选低效、覆盖不全三大运维痛点,支持巡检、应急、变更验证等场景。(239字)
316 0
K8s集群异常Pod高效排查命令(kube-system核心场景)
使用Excel随机分配固定人数到不同组里
本文介绍了如何使用Excel为学生随机分配学科或分组。通过插入=RAND()生成随机数,并结合RANK.AVG和ROUNDUP函数实现按固定人数分组,或用CHOOSE与RANDBETWEEN实现非固定分组。操作简单实用,适用于各类随机分配场景。
使用Excel随机分配固定人数到不同组里
|
9月前
|
存储 搜索推荐 算法
归并排序算法
归并排序是一种基于分治思想的高效排序算法,通过将序列不断划分为不可再分的子序列,再两两合并完成排序。其时间复杂度为O(nlogn),适用于对序列进行升序或降序排列。
496 0
|
关系型数据库 MySQL PHP
2025 游戏试玩打码平台PHP源码
2025 游戏试玩打码平台PHP源码
423 0
2025 游戏试玩打码平台PHP源码
|
算法 前端开发 Linux
深入理解Linux内核调度器:CFS与实时性的平衡####
本文旨在探讨Linux操作系统的核心组件之一——完全公平调度器(CFS)的工作原理,分析其在多任务处理环境中如何实现进程间的公平调度,并进一步讨论Linux对于实时性需求的支持策略。不同于传统摘要仅概述内容要点,本部分将简要预览CFS的设计哲学、核心算法以及它是如何通过红黑树数据结构来维护进程执行顺序,同时触及Linux内核为满足不同应用场景下的实时性要求而做出的权衡与优化。 ####
|
分布式计算 Hadoop Linux
找到Hadoop的安装目录
【4月更文挑战第19天】具体的安装目录可能因您的安装方式和环境而有所不同。如果您在安装Hadoop时遵循了特定的教程或文档,建议参考该教程或文档中的安装目录信息。
680 3