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

相关文章
|
4月前
|
运维 安全 Devops
生产环境缺陷管理
git-poison基于go-git实现分布式bug追溯,解决多分支开发中bug漏修、漏发等协同难题。通过“投毒-解毒-银针”机制,自动化卡点发布流程,降低沟通成本,避免人为失误,已在大型团队落地一年,显著提升发布安全与效率。
|
4月前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
MyBatisPlus是MyBatis的增强工具,简化单表CRUD操作,无需编写XML即可实现增删改查。通过继承BaseMapper、使用Wrapper条件构造器、分页插件等功能,大幅提升开发效率。支持自定义SQL、逻辑删除、枚举与JSON处理,并提供代码生成器和通用Service层封装,广泛应用于企业级项目中。
|
4月前
|
Java 测试技术 Linux
生产环境发布管理
本文介绍大型团队如何通过自动化部署平台实现多环境(dev/test/pre/prod)发布管理,涵盖各环境职责、基于Jenkins+K8S的CI/CD流程、分支可视化操作、容器化部署机制及日志排查方案,提升发布效率与系统稳定性。
|
4月前
|
JSON 缓存 前端开发
什么是跨域
CORS(跨域资源共享)是W3C标准,允许浏览器向跨源服务器发起XMLHttpRequest请求,突破AJAX同源限制。需浏览器和服务器共同支持,主流浏览器均已兼容。通信过程由浏览器自动完成,开发者无需特殊处理。请求分为简单和非简单两类,后者会先发送OPTIONS预检请求确认权限。服务器通过设置Access-Control-Allow-Origin等头部字段控制跨域访问。相比仅支持GET的JSONP,CORS支持所有HTTP方法,更灵活安全。
|
4月前
|
Java Shell 测试技术
Jmeter快速入门
JMeter是基于JDK的性能测试工具,需先安装并配置JDK。下载解压后,通过双击或命令行启动,注意启动较慢且不可关闭黑窗口。可设置中文语言(临时或修改jmeter.properties永久生效)。基本使用包括创建线程组、添加HTTP取样器、配置监听器(如结果树、汇总报告)以查看测试结果。
|
4月前
|
存储 负载均衡 算法
负载均衡算法
负载均衡算法包括随机、轮询、最小活跃数、源地址哈希与一致性哈希。随机可加权提升性能利用,轮询实现顺序调用,最小活跃数动态分配请求,源地址哈希保证IP固定路由,一致性哈希减少节点变动影响,适用于分布式系统中高效流量调度。(239字)
|
4月前
|
敏捷开发 Dubbo Java
需求开发人日评估
本文介绍敏捷开发中工时评估的关键——人日估算方法,涵盖开发、自测、联调、测试及发布各阶段周期参考,并提供常见需求如增删改查、导入导出、跨服务调用等的典型人日参考,助力团队科学规划迭代。
|
4月前
|
存储 数据库
数据库设计三范式
第一范式要求字段原子性,不可再分;第二范式消除部分依赖,主键确定所有非主键;第三范式消除传递依赖。三者旨在减少数据冗余、提升维护效率,但实际设计需结合业务权衡,不必拘泥范式。
|
4月前
|
SQL 安全 网络协议
常见的网络攻击
恶意软件指具有险恶意图的程序,如病毒、勒索软件、间谍软件等,常通过钓鱼邮件或漏洞入侵系统,窃取数据、破坏系统或加密文件勒索。网络钓鱼伪装成可信来源骗取敏感信息。中间人攻击则在通信中窃听或篡改数据。DDoS攻击利用大量流量瘫痪系统,近年呈高频、大体积趋势,常见于僵尸网络和L7层攻击。SQL注入通过输入恶意代码获取非法数据访问权限。零日攻击利用未修复漏洞发起突击。DNS隧道则滥用DNS协议传输隐蔽数据,用于数据外泄或远程控制。各类攻击日益复杂,需综合防御。
|
4月前
|
SQL 安全 关系型数据库
了解SQL注入
SQL注入是利用Web应用输入验证缺陷,将恶意SQL代码注入数据库查询的攻击方式。可导致身份绕过、数据泄露、篡改甚至系统命令执行。常见于登录框等用户输入场景,通过构造特殊字符如单引号、注释符改变SQL逻辑。防御需结合输入验证、参数化查询与错误信息管控,开发与运维协同防护。

热门文章

最新文章