MyBatis的常见配置

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 在mybatis配置过程中的部分总结

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 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。
lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态。
useGeneratedKeys 允许 JDBC 支持自动生成主键,需要数据库驱动支持。如果设置为 true,将强制使用自动生成主键。尽管一些数据库驱动不支持此特性,但仍可正常工作(如 Derby)。

2.2 多环境配置
为了指定创建哪种环境,只要将它作为可选的参数传递给 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);

几个关键点:
● 默认使用的环境 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 模块会使用自带的管理器来覆盖前面的配置。这两种事务管理器类型都不需要设置任何属性。

目录
相关文章
|
23小时前
|
Java 数据库连接 mybatis
MyBatis映射关系
MyBatis中通过resultMap实现一对一、一对多、多对一及多对多映射。
10 0
|
9天前
|
监控 安全 Unix
iOS 崩溃排查不再靠猜!这份分层捕获指南请收好
从 Mach 内核异常到 NSException,从堆栈遍历到僵尸对象检测,阿里云 RUM iOS SDK 基于 KSCrash 构建了一套完整、异步安全、生产可用的崩溃捕获体系,让每一个线上崩溃都能被精准定位。
150 23
|
23小时前
|
Java 应用服务中间件 网络安全
Eclipse运行SSM/SSH项目
本文介绍如何在Eclipse中配置Java Web开发环境。内容包括:下载安装Eclipse、JDK与Tomcat;导入普通或Maven项目;配置Servers绑定本地Tomcat并部署项目,最终启动服务并通过浏览器访问。
16 1
|
23小时前
|
SQL Java 关系型数据库
MyBatis分页
本文介绍了五种分页实现方式:MyBatis自带RowBounds内存分页、PageHelper插件分页、原生SQL分页、数组分页及拦截器分页。RowBounds属逻辑分页,数据量大时易溢出;其余为物理分页,通过数据库或代码控制分页,适合大数据量场景。总结指出:物理分页优先于逻辑分页,推荐用于生产环境。
12 0
|
2天前
|
监控 安全 网络协议
静态 IP 维护:如何清闲置提效率?
静态IP管理需科学规划、规范配置、动态维护与安全防护并重,通过合理划分子网、建立地址台账、定期巡检回收及强化访问控制,有效避免地址冲突与安全风险,保障网络稳定高效运行。
|
SQL 监控 关系型数据库
避免锁表:为Update语句中的Where条件添加索引字段
在一个灰度环境中,某业务创建数据时出现异常延迟,原本以为是第三方接口问题,但日志显示接口响应正常。进一步排查发现,工单表的SQL插入操作因另一个业务的无索引UPDATE操作阻塞。具体问题在于UPDATE语句的where子句涉及字段缺失索引,导致锁表并影响并发性能。通过复现问题并为相关字段添加索引,解决了阻塞问题。重要的是,在编写UPDATE语句时要注意Where条件字段的索引,以优化查询并减少锁表影响。
448 6
避免锁表:为Update语句中的Where条件添加索引字段
|
监控 关系型数据库 MySQL
在Linux中,mysql的innodb如何定位锁问题?
在Linux中,mysql的innodb如何定位锁问题?
|
开发者
2024 乘风者计划全新启航!快来加入吧!
 2021年,阿里云开发者社区焕新升级,重磅推出“乘风者计划”!诚邀四海技术博主入驻社区,泼墨云间,书写天地。入驻社区,即可享丰厚权益! 新的一年,乘风者计划重磅升级!
251835 81
|
前端开发 JavaScript Java
免费下载!程序员入门系列教程之《零基础HTML入门教程》重磅推出
本书由阿里云开发者社区联合乘风者专家博主陈文阳共同制作。 本教程是零基础系列教程的一部分,全套教程具体学习内容还包含前端的 HTML、CSS、JavaScript、jQuery、Bootstrap、Vue,以及后端的 Java、Servlet、JDBC、MySQL 数据库、SSM、Spring Boot、Spring Cloud,本教程讲解其中的 HTML 技术。
32924 4
免费下载!程序员入门系列教程之《零基础HTML入门教程》重磅推出
|
Java 调度
定时任务@Scheduled 和 异步@Async
定时任务@Scheduled 和 异步@Async