常见配置

简介: MyBatis配置优先级:方法参数 > resource/url > properties体内。核心属性包括缓存、延迟加载、自动生成主键等。支持多环境配置,通过environments指定,默认使用development。事务管理支持JDBC和MANAGED,与Spring集成时由Spring接管。

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 即可。可以接受环境配置的两个方法签名是:
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, properties);
如果忽略了环境参数,那么将会加载默认环境,如下所示:
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, properties);
environments 元素定义了如何配置环境:














几个关键点:
● 默认使用的环境 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 模块会使用自带的管理器来覆盖前面的配置。这两种事务管理器类型都不需要设置任何属性。

相关文章
|
5月前
|
存储 安全 测试技术
阿里云轻量应用服务器38元与云服务器99元和199元性能、适用场景区别及选择参考
2026年,阿里云推出的三款入门级云服务器,38元轻量应用服务器、99元经济型e实例及199元通用算力型u1实例,凭借卓越性能和亲民价格,满足个人开发者、小型网站及中小企业的多元需求。轻量服务器以200M峰值带宽和一键部署功能,成为快速建站首选;经济型e实例通过99元续费同价和灵活配置,平衡成本与性能;u1实例则以独享算力和5M固定带宽,为小微企业正式业务提供稳定支撑。本文通过详细对比和测评,助力用户根据实际需求选择最优方案,实现低成本高效上云。
|
7月前
|
弹性计算 Kubernetes 安全
已上线!云监控 2.0 面向实体的全链路日志审计与风险溯源
在云端,一次 API 调用背后可能隐藏着一场数据泄露;一个异常进程背后,或许是 AK 泄露引发的链式攻击。传统日志“看得见却看不懂”,而云监控 2.0 日志审计通过 UModel 实体建模,将分散在 ACS、K8s、主机各层的日志自动串联。
466 84
|
7月前
|
存储 人工智能 Cloud Native
加入我们,一起定义「Data x AI」的未来
我们在杭州、上海开放岗位。如果你准备好了,请加入我们,一起建造 AI 时代最重要的数据基础设施。
416 52
|
7月前
|
机器学习/深度学习 人工智能 安全
2025 智能体工程现状
全面分析 AI 智能体在企业中的采用现状、挑战与趋势。
546 54
|
8月前
|
人工智能 运维 Serverless
从 Transform 到 Transformer,用 EventBridge 与百炼构建实时智能的 ETL 数据管道
作为数据处理领域的经典模式,ETL(Extract-Transform-Load)通过提取、转换、加载三个步骤,高效地处理着各类结构化数据。然而,面对 AI 时代海量、异构、实时的“数据洪流”,传统 ETL 链路,尤其是其核心的转换(Transform)环节,正面临严峻挑战。本文将从一个初级开发者也能理解和上手的视角,探讨 AI 时代的数据处理新范式:如何利用基于 Transformer 架构的大语言模型(LLM)重塑传统数据处理中的转换(Transform)环节,并结合事件驱动架构(Event-Driven Architecture, EDA),为 AI 数据处理链路“注入实时智能”。
449 65
|
7月前
|
存储 缓存 关系型数据库
常见索引类型
本文档系统梳理了数据库索引的多维度分类:按存储结构分为聚簇与非聚簇索引,按约束性分为普通、唯一及主键索引,按字段数量分为单列与组合索引,按功能支持全文与空间索引,按底层结构涵盖B+树与哈希索引,详述其定义、适用场景及核心特性。
什么是幂等
幂等性指操作执行一次或多次结果一致。读操作(如HTTP GET)不改变数据,天然幂等;写操作(如POST、PUT、DELETE)可能改变状态,需额外机制保障幂等。
|
7月前
|
传感器 算法 机器人
医疗引导机器人技术架构解析:决定品牌竞争力的核心要素
智慧医院建设推动医疗引导机器人迈向智能化,其核心技术涵盖多传感器融合导航、垂直领域大模型与RAG语义理解、主动视觉交互、跨楼层梯控及HIS系统深度集成。本文从技术架构出发,剖析环境感知、认知决策与系统协同的关键突破,揭示机器人如何成为连接物理空间与数字医疗的核心终端。
|
7月前
|
SQL 数据采集 监控
阿里云国际站服务器进行漏洞扫描的目的,漏洞扫描技术原理是什么?
阿里云国际站服务器进行漏洞扫描的目的,漏洞扫描技术原理是什么?
436 1
|
7月前
|
Java 应用服务中间件 微服务
了解spring项目与springboot项目的区别和优缺点
Spring Boot是Spring的增强版,通过自动配置和Starter依赖简化开发,内置服务器支持JAR包直接运行,适合微服务与快速开发;传统Spring项目则更灵活,适合复杂定制场景。二者互补,新项目推荐Spring Boot。

热门文章

最新文章