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

相关文章
|
1天前
|
JSON Java 数据格式
SpringBoot使用汇总
本课程系统讲解Spring Boot核心知识,涵盖环境搭建、JSON数据处理、日志记录、属性配置、MVC支持、异常处理等,结合实战案例与源码解析,助力开发者快速掌握微服务开发技能。
|
1天前
|
Java
@Inherited
@Inherited用于注解上,表示该注解可被子类继承。当加在父类时,子类会自动继承该注解;但接口间继承或类实现接口时,均不继承注解,无论是否使用@Inherited。
|
1天前
|
XML SQL Java
1. 整合Logback,滚动记录+多文件
本文介绍了`logback-spring.xml`的配置与使用,通过定义多个Appender和Logger实现日志分级输出至不同文件,如支付、任务、SQL等;结合`LogProxy.getLogger()`在Java代码中按名称获取指定日志记录器,实现精准日志分类管理,提升系统可维护性。(238字)
|
1天前
|
存储 Java 数据库
2. 整合切面,参数拦截+过滤
基于Spring AOP实现的请求拦截切面,用于记录Web层入参信息。自动捕获请求来源、URL、方式、响应方法及参数,并记录执行耗时,便于调试与日志追踪,支持后续扩展至日志存储或ELK分析。
|
1天前
|
JSON Java 数据格式
4. 不定参数入参
本文介绍了Spring Boot中Controller层接口的常见参数接收方式,包括非JSON格式入参(如对象、基本类型、@RequestParam、@RequestBody)和JSON格式入参,涵盖单个/多个参数通过JSONObject接收及封装对象接收的方式,并展示了结合@Valid注解进行参数校验的实践示例。
|
1天前
|
JSON 安全 Java
6.鉴权
本文介绍基于Spring Security与JWT实现客户端Token认证方案,涵盖依赖配置、安全设置、JWT生成与验签、自定义认证及过滤器实现,结合RBAC权限控制,保护Spring Boot应用接口安全。
|
1天前
|
存储 缓存 Java
自动装配机制
本文深入解析SpringBoot自动装配机制,从@SpringBootApplication注解入手,剖析其组合注解原理。重点讲解@AutoConfigurationPackage通过@Import实现包扫描路径注册,以及@AutoConfigurationImportSelector如何借助SpringFactoriesLoader加载spring.factories中配置的自动装配类,结合条件注解实现智能化配置,最终实现“约定优于配置”的核心思想。(238字)
|
1天前
|
安全 数据安全/隐私保护
1.什么是权限管理
权限管理包含认证与授权两大核心:认证验证用户身份(如登录),授权则根据角色分配资源访问权限。通过角色叠加生成可访问菜单,实现操作安全控制,避免数据泄露等问题,为系统提供全面安全保障。
|
1天前
|
安全 Java 应用服务中间件
3.实现权限管理的技术
权限管理技术选型需综合考量。常见方案如Apache Shiro,轻量易用但安全维护弱;Spring Security功能强大,适合Spring生态但较重;自定义ACL贴近业务但通用性差。多数工具均为ACL或RBAC的封装,应根据项目需求权衡选择。
|
1天前
|
安全 Java 网络架构
4.认识SpringSecurity
SpringSecurity是Java生态中主流的权限框架,核心功能包括认证与鉴权。支持表单、OAuth2、JWT等多种认证方式,具备URL级、方法级授权及RBAC模型,可防御CSRF等攻击。其架构基于过滤器链,通过FilterChainProxy实现多安全过滤链,并结合ExceptionTranslationFilter处理认证异常,灵活且扩展性强。