MyBatis常见配置

简介: 本文介绍MyBatis核心配置,包括属性加载优先级(方法参数 > resource/url > properties元素)、常用配置项如缓存、延迟加载、执行器类型,以及多环境配置与事务管理(JDBC/MAINTAINED),适用于多数据源场景。

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 元素定义了如何配置环境:

<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。

3 事务管理

1 JDBC

这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域

2 MANAGED

它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。

注意:

如果用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。这两种事务管理器类型都不需要设置任何属性。

相关文章
|
存储 人工智能 运维
阿里云 Tair 基于 3FS 工程化落地 KVCache:企业级部署、高可用运维与性能调优实践
阿里云 Tair KVCache 团队联合硬件团队对 3FS 进行深度优化,通过 RDMA 流量均衡、小 I/O 调优及全用户态落盘引擎,提升 4K 随机读 IOPS 150%;增强 GDR 零拷贝、多租户隔离与云原生运维能力,构建高性能、高可用、易管理的 KVCache 存储底座,助力 AI 大模型推理降本增效。
|
4月前
|
存储 人工智能 运维
日志服务&云监控全新发布,共筑企业智能运维新范式
阿里云推出Operation Intelligence新范式,通过日志服务SLS与云监控2.0,实现从感知、认知到行动闭环,推动运维迈向自决策时代。
358 1
日志服务&云监控全新发布,共筑企业智能运维新范式
|
2月前
|
缓存 Java Nacos
@RefreshScope热更新原理
本文深入解析Spring Cloud中@RefreshScope注解实现配置热更新的原理。通过分析其组合注解特性,重点剖析@Scope(&quot;refresh&quot;)如何借助动态代理与缓存机制,在配置变更时触发Bean重建,结合Nacos实现配置自动刷新,从而达到无需重启应用即可生效的效果。
@RefreshScope热更新原理
|
2月前
|
API 数据库 uml
如何写好一篇技术方案
本项目旨在升级知识库基础能力,优化目录与文档管理分离、拖拽交互不流畅等问题,提升用户体验。涵盖需求背景、功能模块、流程图、API及数据库设计,并通过图表与排期卡明确开发计划,助力团队高效协作推进。
 如何写好一篇技术方案
|
2月前
|
存储 安全 小程序
1.认识OAuth2.0
OAuth2.0是一种开放授权标准,允许第三方应用在用户授权下安全访问资源,无需获取用户账号密码。其核心是通过令牌(token)实现有限授权,广泛用于第三方登录、服务间资源调用等场景,支持授权码、简化、密码和客户端四种模式,兼顾安全性与灵活性。
 1.认识OAuth2.0
|
2月前
|
缓存 算法 Java
IO/线程 线程池
本文深入剖析Java线程池的工作原理,涵盖ThreadPoolExecutor与ScheduledThreadPoolExecutor的实现机制。通过源码分析,详解线程池如何管理线程生命周期、任务调度策略及延时队列等核心组件,并结合Executors工具类说明各类线程池的应用场景。
|
2月前
|
存储 NoSQL 关系型数据库
4-MongoDB索引知识
MongoDB索引基于B树结构,可高效支持查询,避免全集合扫描。主要类型包括单字段索引、复合索引、地理空间索引、文本索引和哈希索引,适用于不同查询场景,显著提升查询性能。
 4-MongoDB索引知识
|
2月前
|
存储 NoSQL 关系型数据库
1-MongoDB相关概念
MongoDB是一款高性能、无模式的文档型NoSQL数据库,适用于高并发、海量数据、高可用性场景。其灵活的BSON文档模型、丰富的查询支持及水平扩展能力,广泛应用于社交、游戏、物联网等领域,尤其适合非事务性、快速迭代的应用系统。
 1-MongoDB相关概念
|
2月前
|
NoSQL Java 测试技术
5-MongoDB实战演练
本文介绍某头条文章评论功能的设计与实现,基于SpringDataMongoDB构建微服务,完成评论的增删改查、按文章ID查询、分页查询及点赞功能。通过MongoTemplate优化点赞操作,提升性能,并使用索引提高查询效率,整体方案高效且可扩展。
 5-MongoDB实战演练
|
2月前
|
存储 JSON NoSQL
3-MongoDB常用命令
本文介绍MongoDB数据库操作,包括创建和删除数据库、集合的显式与隐式创建及删除,以及文档的增删改查。重点讲解文章评论数据存储至articledb库中的实际应用,涵盖批量插入、条件查询、分页排序等常用操作,帮助掌握MongoDB基本CRUD技能。
 3-MongoDB常用命令

热门文章

最新文章