常见配置

简介: 本文介绍MyBatis核心配置,涵盖属性加载优先级(方法参数 > resource/url > properties元素)、关键配置项如cacheEnabled、lazyLoadingEnabled、useGeneratedKeys等,并详解多环境配置方式及事务管理机制(JDBC与MANAGED),适用于多数据源场景。

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

相关文章
|
11小时前
|
Arthas 监控 Java
下载安装
Arthas 是一款Java诊断工具,使用前需确保服务器已启动Java应用、安装JDK并可访问公网。通过下载 arthas-boot.jar 并启动,可连接目标Java进程进行实时监控与问题排查,支持多进程选择,操作简单高效。
下载安装
|
14小时前
|
消息中间件 算法 网络协议
8.选举机制理解描述
本文深入解析ZooKeeper的Leader选举机制,涵盖启动期与运行期的选举流程、FastLeaderElection算法核心规则及实现细节,重点分析投票PK、逻辑时钟、状态变更等关键环节,揭示数据一致性保障原理。
|
11小时前
|
数据安全/隐私保护
RememberMe简介及用法
RememberMe功能并非简单保存用户名密码,而是服务器端维持登录状态的机制。用户关闭浏览器后重新打开,仍可保持登录,提升体验,区别于传统Session会话需重复登录的方式。
|
11小时前
|
存储 缓存 安全
Java基础 One Trick Per Day
初始化Map应避免直接指定大小,建议使用Guava的newHashMapWithExpectedSize或手动计算容量。禁止使用Executors创建线程池,易因队列无界或线程数过多导致OOM,推荐ThreadPoolExecutor自定义参数。Arrays.asList返回不可变列表,禁用增删操作。遍历Map优先使用entrySet或JDK8的forEach。SimpleDateFormat非线程安全,避免static共享可用ThreadLocal或DateTimeFormatter替代。并发更新记录时建议采用乐观锁(如version机制)或加锁策略,冲突概率低时优选乐观锁并设置合理重试次数
Java基础 One Trick Per Day
|
12小时前
|
关系型数据库 MySQL Java
开发环境搭建
工欲善其事,必先利其器。学习前请确保电脑内存16G以上(建议32G),推荐使用便携显示器分屏开发。需安装VMware虚拟机并导入CentOS 7系统(IP:192.168.101.68),配置IDEA、Maven、Git环境,拉取Gitee项目代码,创建数据库并导入SQL。苹果用户需用Docker安装MySQL。
开发环境搭建
|
13小时前
|
存储 数据库
数据库设计三范式
本内容简要介绍了一个主题,涵盖其核心概念、主要特点及实际应用。通过清晰的结构和通俗的语言,帮助读者快速理解关键信息,适合初学者与有兴趣深入了解者阅读学习。(136字符)
|
11小时前
|
canal 消息中间件 关系型数据库
配置数据同步环境
配置Canal+RabbitMQ实现MySQL数据同步,通过开启Binlog行模式、创建专用用户并授权,部署Canal监听指定表变更,将数据实时发送至RabbitMQ指定队列,确保hm-item库中item_sync表的增删改操作同步至消息队列,支持后续数据消费与处理。
|
13小时前
|
SQL XML Java
logback-spring.xml
本配置文件为Logback日志系统配置,支持控制台与文件双输出,按级别、模块分离日志(如SQL、支付、定时任务等),支持每日滚动归档,保留15天历史记录,适用于SpringBoot项目,可通过环境变量灵活配置路径与级别。
|
13小时前
|
存储 缓存 Java
自动装配机制
本文深入解析SpringBoot自动装配机制,从@SpringBootApplication注解入手,剖析其组合注解原理。重点讲解@EnableAutoConfiguration如何通过@AutoConfigurationPackage和AutoConfigurationImportSelector实现包扫描与自动配置类加载,结合@ComponentScan、元注解及spring.factories机制,揭示SpringBoot“约定优于配置”的底层实现逻辑。
|
13小时前
|
XML JSON Java
什么是RESTful
RESTful是一种设计规范,强调将资源抽象为URI,通过HTTP动词(GET/POST/PUT/DELETE)对其进行操作,实现统一、标准的接口风格,提升可读性与可维护性。

热门文章

最新文章