mybatis常见配置

简介: 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月前
|
弹性计算 运维 应用服务中间件
阿里云轻量应用服务器 vs 云服务器 ECS:全方位深度对比与选购指南
在阿里云的服务器产品体系中,轻量应用服务器与云服务器 ECS 是面向不同需求的核心产品。前者以 “简单易用、高性价比” 为核心,后者以 “功能全面、弹性灵活” 为优势。本文从适用人群、业务场景、功能配置、计费价格等 8 大维度展开深度对比,结合阿里云最新优惠政策,帮你精准匹配最适合的服务器方案。
|
安全 Java 关系型数据库
《阿里巴巴Java开发手册(终极版)》电子版下载地址
《阿里巴巴Java开发手册》(终极版)从Java开发者的视角出发,内容涵盖编程规约、异常日志、单元测试、安全规约、工程结构、MySQL数据库六个维度。 本手册自发布以来,多次迭代,阅读量数以百万计,可称为Java开发者的必读手册。通过阅读本书,开发者同学可以系统地学习到如何在编程过程中高效协作、提升程序的交付质量、以及提升代码内容的创造性和优雅性。
1518 0
《阿里巴巴Java开发手册(终极版)》电子版下载地址
|
移动开发 缓存 自然语言处理
ant-design-pro项目开发全攻略(用这个做博客网站模板不要太快,一招鲜吃遍天)
ant-design-pro项目开发全攻略(用这个做博客网站模板不要太快,一招鲜吃遍天)
ant-design-pro项目开发全攻略(用这个做博客网站模板不要太快,一招鲜吃遍天)
|
6月前
|
SQL Java 数据库连接
MyBatis的配置文件中定义类型别名(type aliases)的技巧。
类型别名提供了一种便捷的方式来引用复杂的全限定类名。通过使用 `<package>`标签进行自动扫描或使用 `<typeAlias>`标签手动指定,可以在整个MyBatis配置中提高清晰度和维护性。无论是简化mapper文件中的配置,还是提高整体的配置可读性,类型别名都是一个非常有用的配置工具。
269 0
|
消息中间件
RabbitMQ配置单活模式队列
RabbitMQ配置单活模式队列
588 0
|
Java 关系型数据库 数据库连接
SpringBoot(八)之JdbcTemplate
在 application.properties 或 application.yml 文件中配置数据库连接信息。
927 0
|
SQL 关系型数据库 MySQL
MySQL外键约束行为解析:CASCADE, NO ACTION, RESTRICT, SET NULL
MySQL外键约束行为解析:CASCADE, NO ACTION, RESTRICT, SET NULL
2322 0
|
Java 关系型数据库 MySQL
MyBatis-Plus 入门 【SpringBoot版】
今天来带大家入门学习MyBatis-Plus,MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
|
前端开发 容器
react使用echarts图表
react使用echarts图表
553 0
|
SQL 缓存 Java
Mybatis之配置文件与映射文件的“那些事”,你真的知道吗?(上)
Mybatis之配置文件与映射文件的“那些事”,你真的知道吗?(上)