1.常见配置

本文涉及的产品
RDS Agent(兼容OpenClaw),2核4GB
云数据库 PolarDB MySQL 版,列存表分析加速 8核16GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: MyBatis配置优先级:方法参数 > resource/url > properties体内。核心属性包括缓存、延迟加载、主键生成等。支持多环境配置,通过environments指定,默认使用default环境。事务管理支持JDBC和MANAGED,与Spring集成时由Spring接管。详细配置参考官方Java API文档。

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 模块会使用自带的管理器来覆盖前面的配置。这两种事务管理器类型都不需要设置任何属性。

相关文章
|
存储 数据采集 JavaScript
深入理解数仓开发(一)数据技术篇之日志采集
深入理解数仓开发(一)数据技术篇之日志采集
|
JSON 网络协议 数据格式
Docker(35)- docker inspect 命令详解
Docker(35)- docker inspect 命令详解
1698 0
Docker(35)- docker inspect 命令详解
|
6月前
|
弹性计算 负载均衡 监控
SLB负载均衡配置完全指南
本文全面解析SLB负载均衡配置,涵盖CLB、ALB、NLB类型对比,四层与七层架构差异,健康检查、会话保持、安全防护及监控告警等核心配置,并结合高可用Web集群实验,系统呈现SLB部署全流程与最佳实践,助力构建稳定、高效、安全的分布式应用架构。
1034 0
|
6月前
|
数据库
各种锁的专题
数据库锁机制简介:包括写锁(排他)、共享锁(读)、排他锁、间隙锁、行锁、表锁及分布式锁,用于控制并发访问,保证数据一致性与完整性。
|
6月前
|
SQL 关系型数据库 Java
3.分页
本文介绍了五种分页实现方式:MyBatis自带RowBounds内存分页、PageHelper插件分页、SQL原生分页、数组分页及拦截器分页。前两者属逻辑分页,查全量数据后处理,小数据量高效但内存开销大;后三者为物理分页,直接在数据库层分页,适合大数据量场景。推荐优先使用物理分页以提升性能与系统稳定性。(238字)
|
6月前
|
安全 前端开发 Java
1.RememberMe简介及用法
RememberMe是一种服务器端机制,通过Cookie实现用户关闭浏览器后仍保持登录状态。用户首次登录并勾选“记住我”后,服务端生成令牌写入Cookie;后续请求自动携带该令牌进行校验,实现免密登录。但令牌泄露可能导致安全风险,可通过持久化Token至数据库并增加二次验证提升安全性。
|
6月前
|
XML Java 数据格式
@Configuration
被 `@Configuration` 标注的类视为Spring配置类,相当于XML配置文件。结合 `@Bean` 可注册Bean实例,通过 `AnnotationConfigApplicationContext` 加载配置类,启动IOC容器并管理Bean生命周期,配置类本身也会被作为Bean加载。
|
6月前
|
运维 Devops 开发工具
生产环境缺陷管理
针对大型团队多分支开发中bug协同难、易遗漏等问题,我们基于go-git打造了分布式工具git-poison,实现bug的精准追溯与自动化卡点。通过“投毒-解毒-银针”机制,打通开发、测试、发布与运维环节,有效避免未修复、漏合、漏发等P1级故障,降低沟通成本,提升发布安全性与效率,已在公司内部落地应用超一年,稳定可靠。
|
6月前
|
存储 JSON NoSQL
3-MongoDB常用命令
本文介绍如何使用MongoDB存储文章评论数据,涵盖数据库与集合的创建、删除,文档的增删改查、批量操作、投影查询、分页排序等功能,结合实际示例说明CRUD操作及注意事项,帮助快速掌握MongoDB基本用法。
|
6月前
|
存储 NoSQL Linux
2-MongoDB单机部署
本文介绍MongoDB在Windows和Linux系统的安装启动方法,包括下载、解压、配置数据目录及启动方式(命令行或配置文件)。支持设置环境变量、修改端口、日志与存储路径,并通过mongo shell或Compass图形化工具连接。Linux下还需配置防火墙与关闭服务,确保数据库稳定运行。

热门文章

最新文章