1.常见配置

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

相关文章
|
2月前
|
负载均衡 Java Nacos
Gateway服务网关
网关是微服务的统一入口,实现请求路由、权限控制与限流。基于Spring Cloud Gateway可快速搭建高性能网关,支持断言与过滤器灵活配置,并解决跨域问题,提升系统安全性和可维护性。
|
2月前
|
消息中间件 存储 监控
Mac系统安装教程
RabbitMQ是基于AMQP协议的开源消息代理,支持异步通信、解耦服务,在分布式与微服务架构中广泛应用。具备高可靠、灵活路由、持久化、可扩展等特性,支持多种消息模式。可通过Homebrew或二进制方式安装,提供Web管理界面,便于操作与监控。(238字)
|
2月前
|
存储 缓存 NoSQL
分布式缓存Redis(高级)
本节深入讲解Redis持久化机制(RDB与AOF)、主从同步、哨兵集群及分片集群搭建,涵盖数据安全、高可用、读写分离与扩容方案,助力实现Redis在生产环境中的稳定落地。
|
2月前
|
关系型数据库 应用服务中间件 Nacos
Nacos配置中心
本章详解Nacos配置中心实战:实现微服务配置统一管理,支持热更新、配置共享与优先级控制,并搭建高可用集群,提升系统稳定性。
|
2月前
|
Java
类加载
Java中代码块执行顺序为:静态代码块 > 局部代码块 > 构造器。静态代码块随类加载执行,仅一次;局部代码块在方法内执行;构造代码块每次创建对象前调用,优先于构造方法执行,且先于main函数运行。
|
2月前
|
关系型数据库 MySQL Java
SpringCloud工程部署启动
本教程介绍SpringCloud微服务工程搭建与部署,涵盖完整项目导入或从零创建父/子模块,配置Maven依赖、数据库连接及业务代码。通过RestTemplate实现order-service调用user-service获取用户信息,演示微服务间远程通信原理,帮助理解服务拆分与调用关系,掌握基础分布式架构实践。
|
2月前
|
关系型数据库 应用服务中间件 nginx
容器引擎Docker
本节介绍Docker技术,解决微服务部署中环境不一致、依赖冲突等问题。通过镜像打包应用及依赖,实现跨环境无缝迁移;利用容器隔离机制保障服务独立运行;结合Docker Compose快速部署分布式应用,提升开发、测试、运维效率。
|
2月前
|
SQL Nacos 数据库
工程介绍
本课程围绕微服务架构展开,涵盖Nacos配置中心、Feign远程调用及Gateway网关实践。通过doctor-station项目实战,完成配置热更新、开单限流、维护时间控制,实现服务解耦与请求路由,提升系统可维护性与安全性。(238字)
|
2月前
|
Dubbo Java 应用服务中间件
Feign远程调用
本章介绍如何用Feign替代RestTemplate实现更优雅的HTTP跨服务调用。通过引入Feign,解决服务地址硬编码、代码可读性差等问题,结合注册中心实现基于服务名的调用。讲解了Feign的使用方式、自定义配置(如日志级别)、连接池优化(如Apache HttpClient),并总结了继承与抽取两种最佳实践,推荐将Feign客户端抽离为独立模块,提升代码复用性与维护性。
|
2月前
|
存储 数据库
数据库设计三范式
数据库三范式是设计合理表结构的指导原则。第一范式要求字段原子性,不可再分;第二范式要求消除部分依赖,一张表只描述一件事;第三范式要求消除传递依赖。但实际应用中需结合业务权衡,不必严格拘泥。