1.常见配置

简介: 本文介绍了MyBatis的核心配置机制,包括属性加载优先级(方法参数 > resource/url > properties元素)、常用配置项如缓存、延迟加载、执行器类型等,并详解了多环境配置与事务管理(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 模块会使用自带的管理器来覆盖前面的配置。这两种事务管理器类型都不需要设置任何属性。

相关文章
|
存储 缓存
Debug:获取自定义cookie为空的常见原因
1 场景在实现HandlerInterceptor接口的过程中,常用到HttpServletRequest的getCookies()方法,可以获取缓存的cookie数据。以下拦截器可以实现利用cookie实现自动登录基本思路:检查cookie在不在-检查cookie_username在不在-检查session中有没有用户-保持登录实现: import entity.User; import ser
2066 1
Debug:获取自定义cookie为空的常见原因
|
5月前
|
存储 监控 Docker
ElasticSearch集群
Elasticsearch集群通过分片和副本解决海量数据存储与单点故障问题。分片实现数据水平拆分,副本保障高可用,结合节点角色划分与故障转移机制,提升系统稳定性与性能。
 ElasticSearch集群
|
5月前
|
消息中间件 负载均衡 Linux
RabbitMQ部署指南
本文介绍RabbitMQ在CentOS7中基于Docker的单机与集群部署方案,涵盖镜像安装、DelayExchange插件配置、普通集群与镜像模式搭建,并详细演示仲裁队列使用及集群扩容方法,助力实现高可用消息队列服务。
 RabbitMQ部署指南
|
5月前
|
自然语言处理 数据可视化 Docker
安装ES、Kibana、IK
本文介绍如何通过Docker部署单节点Elasticsearch与Kibana,并安装IK分词器。内容涵盖创建网络、加载镜像、运行容器、配置扩展词典与停用词典,以及常见启动报错处理,帮助快速搭建ES开发环境。
安装ES、Kibana、IK
|
5月前
|
关系型数据库 MySQL Java
开发环境搭建
工欲善其事,必先利其器。本文档指导配置Java开发环境:要求电脑内存16G以上(推荐32G),建议配备便携显示器提升效率。需安装VMware虚拟机(CentOS7系统)、IDEA、Maven、Git等工具,并导入虚拟机镜像与项目资料。通过FinalShell远程连接虚拟机(IP:192.168.101.68),配置Nginx运行前端,最终启动黑马商城项目。详细步骤涵盖环境搭建、网络设置、数据库导入及常见问题处理,助力高效开发。
|
5月前
|
Kubernetes Java 应用服务中间件
1.开发篇(脚手架下载)
本文介绍基于SpringCloud + Kubernetes的微服务开发实践,重点分享EDAS 3.0在项目初始化与本地启动环节的优化体验。通过阿里云start.aliyun.com脚手架快速生成项目,结合Cloud Toolkit插件一键拉起本地注册中心,实现应用快速部署与联调,提升开发者效率。后续将深入讲解云端部署及端云互联能力。
|
5月前
|
SQL 容灾 Nacos
Seata的部署和集成
本文介绍Seata TC服务器的部署与微服务集成,包括下载、配置、数据库表初始化及高可用集群搭建,实现基于Nacos的分布式事务管理与异地容灾支持。
|
5月前
|
NoSQL Linux 网络安全
Redis集群部署指南
本章介绍CentOS7下Redis集群搭建,涵盖单机安装、主从复制、哨兵高可用及分片集群配置,通过实操命令与图示详解各集群模式的部署与测试过程。
|
5月前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
本文详细介绍如何使用Nacos实现微服务配置中心,涵盖配置管理、热更新、共享配置及优先级规则,并演示Nacos集群搭建与高可用部署,提升系统可维护性与稳定性。
 Nacos配置中心
|
1月前
|
JSON 关系型数据库 API
超清晰教程:Python 调用京东商品详情 API(完整可运行)
我给你一套最简单、最稳定、可直接复制运行的京东商品详情 API 调用代码,包含: 签名生成 → 接口请求 → 数据解析 → 异常处理你只需要替换自己的 AppKey、AppSecret、AccessToken 就能用。