mybatis
文章平均质量分 82
lang20150928
stay hungry stay foolish
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MyBatis的SpringBootVFS解析
SpringBootVFS是MyBatis在Spring Boot环境下的关键适配类,解决了JAR包内资源扫描的兼容性问题。它继承MyBatis的VFS抽象类,利用Spring的PathMatchingResourcePatternResolver来正确加载嵌套JAR中的类文件。核心方法list()通过Spring资源解析器获取指定路径下的所有.class文件,并转换为MyBatis所需的相对路径格式。原创 2025-10-13 19:23:06 · 396 阅读 · 0 评论 -
MyBatis主键生成核心类解析
MyBatis主键生成机制的核心由Jdbc3KeyGenerator和SelectKeyGenerator两个类实现,分别处理数据库自增主键和自定义SQL获取主键的场景。Jdbc3KeyGenerator通过JDBC的getGeneratedKeys()获取自增ID并回填对象,支持单对象、多参数和批量插入;SelectKeyGenerator则通过执行额外SQL(如Oracle序列查询)获取主键,可配置在插入前后执行。两者均使用反射和MetaObject工具进行属性赋值。实际应用中需根据数据库特性选择。原创 2025-10-13 15:22:40 · 309 阅读 · 0 评论 -
MyBatis-Spring-Boot快速上手指南
MyBatis-Spring-Boot-Starter 是一个简化 Spring Boot 集成 MyBatis 的启动器,通过自动装配实现零配置开发。它自动创建数据源、SqlSessionFactory 和 SqlSessionTemplate,并扫描带有 @Mapper 注解的接口。开发者只需添加依赖,定义 Mapper 接口和 SQL 语句,即可直接注入使用,无需繁琐的 XML 配置。支持通过 application.yml 进行 MyBatis 参数调优,兼容不同 Spring Boot 版本。原创 2025-10-11 09:42:29 · 907 阅读 · 0 评论 -
MyBatis-Spring自动注入Mapper全解析
MyBatis-Spring核心用法:自动注入Mapper接口 MyBatis-Spring推荐通过自动扫描注入Mapper接口,实现"接口即DAO"的开发模式。相比传统手动创建DAO的方式,这种方式具有显著优势: 类型安全:编译时检查,避免字符串拼写错误 零实现类:无需手动编写实现类 自动代理:Spring自动创建代理对象处理SQL执行 事务集成:无缝兼容Spring事务管理 实现方式有三种: 单个注册MapperFactoryBean(适合少量Mapper) 批量扫描(XML项目推荐原创 2025-10-11 09:28:28 · 541 阅读 · 0 评论 -
MyBatis-Spring核心:SqlSessionTemplate解析
本文介绍了MyBatis与Spring集成时SqlSession的正确使用方法。核心要点是: 在Spring环境下不应直接使用原生SqlSession,而应使用Spring提供的SqlSessionTemplate SqlSessionTemplate解决了原生SqlSession的线程安全和事务管理问题 配置方式包括XML和Java Config两种 提供了批量执行的高级用法 介绍了SqlSessionDaoSupport工具类简化开发 通过图示展示了几种组件之间的关系 关键点在于理解SqlSession原创 2025-10-11 09:28:17 · 934 阅读 · 0 评论 -
Spring无缝管理MyBatis事务
MyBatis-Spring集成后,Spring全面接管事务管理,开发者不再需要手动commit/rollback。配置上只需定义事务管理器(如DataSourceTransactionManager),通过@Transactional注解或TransactionTemplate即可实现声明式事务。MyBatis的SqlSession生命周期由Spring控制,禁止手动操作事务方法。原创 2025-10-11 09:27:39 · 967 阅读 · 0 评论 -
MyBatis-Spring核心:SqlSessionFactoryBean详解
SqlSessionFactoryBean是MyBatis与Spring集成的核心组件,作为工厂Bean在Spring容器启动时自动创建并管理MyBatis的SqlSessionFactory。相比原生MyBatis需手动构建,它通过实现FactoryBean接口,让Spring调用其getObject()方法生成实际的SqlSessionFactory。关键配置包括:必需的dataSource数据源;可选的configLocation指定外部MyBatis配置文件(但会忽略环境相关配置);推荐使用的map原创 2025-10-09 10:04:38 · 246 阅读 · 0 评论 -
Spring与MyBatis整合核心解析
SqlSessionFactoryBean是MyBatis与Spring集成的核心组件,用于在Spring容器中自动创建和管理MyBatis的SqlSessionFactory。它通过实现Spring的FactoryBean接口,将复杂的MyBatis配置过程封装为Spring Bean的声明式配置。关键配置包括必需的dataSource属性、可选的configLocation或configuration(推荐后者)、mapperLocations(指定XML映射文件路径)等。该组件简化了MyBatis在S原创 2025-10-09 10:03:43 · 263 阅读 · 0 评论 -
MyBatis-Spring 快速入门指南
MyBatis-Spring官方文档入门指南介绍了如何将MyBatis集成到Spring项目中。核心步骤包括:1)配置SqlSessionFactory作为Spring Bean;2)将Mapper接口注册为Spring Bean,通过动态代理实现数据库操作。关键优势在于自动管理数据库连接、支持Spring事务和统一异常处理。整个过程通过FactoryBean机制在容器启动时完成初始化,业务层可直接注入Mapper接口使用。这种集成方式简化了持久层开发,使开发者能专注于业务逻辑。原创 2025-10-09 10:01:55 · 363 阅读 · 0 评论 -
MyBatis-Spring集成完全指南
MyBatis-Spring是一个用于无缝集成MyBatis和Spring框架的桥梁库,主要功能包括参与Spring事务管理、自动创建Mapper和SqlSession、依赖注入以及异常转换。该项目由社区开发,弥补了Spring官方对MyBatis 3支持的不足。使用前需掌握MyBatis和Spring基础知识,版本选择需根据Spring和Java版本匹配:Spring 6+需MyBatis-Spring 3.0+,Spring 5+需2.1或2.0,老旧系统可用1.3版本。Spring Boot项目推荐使原创 2025-10-09 10:00:22 · 482 阅读 · 0 评论 -
掌握MyBatis Java API:高效操作数据库
MyBatis Java API 核心解析(150字摘要) MyBatis Java API 提供了一套简化JDBC操作的接口: 1️⃣ SqlSessionFactoryBuilder:通过XML或Java配置构建线程安全的SqlSessionFactory 2️⃣ SqlSessionFactory:生产SqlSession的工厂,支持不同执行模式(SIMPLE/REUSE/BATCH) 3️⃣ SqlSession:核心交互对象,支持三种操作方式: 原始SQL执行(字符串ID) Mapper接口(推荐原创 2025-10-09 09:53:32 · 461 阅读 · 0 评论 -
MyBatis动态SQL核心解析与实战
MyBatis动态SQL的核心功能解析:通过XML标签实现灵活SQL拼接,避免手动字符串拼接的风险。主要包含五大核心标签:1)<if>用于条件判断;2)<choose>/<when>/<otherwise>实现多路分支选择;3)<where>/<set>/<trim>智能处理WHERE和SET子句;4)<foreach>支持集合遍历;5)<bind>创建变量。此外支持多数据库兼容方案,通过_datab原创 2025-10-09 09:52:07 · 716 阅读 · 0 评论 -
MyBatis Mapper XML 核心详解
MyBatis Mapper XML文件是MyBatis框架处理SQL映射的核心组件。它通过半自动化的方式,允许开发者直接编写SQL语句,同时提供强大的结果映射功能。主要包含查询、插入、更新、删除等SQL操作标签,支持参数绑定(#{})、结果集映射(ResultMap)、SQL片段复用等特性。MyBatis不隐藏SQL,而是增强SQL能力,通过ResultMap处理复杂对象关系映射(一对一、一对多),并支持缓存优化。使用时需注意#{param}(安全预编译)和${param}(有注入风险的字符串替换)的区别原创 2025-10-09 09:41:48 · 837 阅读 · 0 评论 -
MyBatis配置全解析:核心要点详解
MyBatis 核心配置解析 MyBatis 的配置文件 mybatis-config.xml 采用分层设计,主要包含以下核心组件: <properties>:支持外部化配置,通过 ${} 引用变量,优先级为代码参数 > 外部文件 > 标签内属性。 <settings>:关键运行时行为控制,如缓存开关、懒加载、日志实现等,直接影响性能。 <typeAliases>:为类名配置短别名,支持包扫描自动注册或注解自定义。 <typeHandlers>:处原创 2025-10-09 09:32:36 · 369 阅读 · 0 评论 -
MyBatis入门指南:从零掌握数据库操作
本文是MyBatis框架的官方入门指南摘要,介绍了MyBatis的核心概念和使用步骤。主要内容包括:1)MyBatis作为轻量级ORM框架的特点;2)四大核心组件(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper接口)的作用;3)通过XML或Java代码配置SqlSessionFactory的方法;4)推荐使用Mapper接口执行SQL;5)XML映射文件与注解两种SQL定义方式;6)命名空间的重要性和名称解析规则;7)各组件生命周期管原创 2025-10-09 09:28:53 · 409 阅读 · 0 评论 -
MyBatis中数据库字段强制大小写统一问题
MyBatis在进行对象映射时如果为Map,此时会因为不同的数据库导致Map中的key值大小写不同而导致程序中出现问题。可以通过扩展ObjectWrapperFactoryj解决问题原创 2022-11-02 09:53:45 · 4027 阅读 · 0 评论 -
SpringBoot项目中动态切换数据源创建SqlSessionFactory实例
在有些项目当中,需要多个数据源,甚至是不同类型的数据库,但是想公用MyBatis的接口以及xml资源。此时可以根据数据源动态创建新的SqlSessionFactory实例,而不是在启动过程中创建的单例。对应的代码如下,主要有两点大体逻辑直接从org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration#sqlSessionFactory中拷贝而来(这样可以共用在配置文件中针对MyBatis的各种配置)需要修改org.mybatis.spr原创 2021-11-11 18:42:12 · 3768 阅读 · 8 评论 -
MyBatis热部署
监控目标文件,需要依赖<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version></dependency>当文件变动时,获取SqlSessionFactory对象当中的Configuration,并通过反射获取其中的属性mappedStat原创 2021-09-11 16:09:23 · 243 阅读 · 1 评论 -
整合数据源使用MyBatis日志
package com.xquant.xpms.commons.config;import com.zaxxer.hikari.HikariDataSource;import org.apache.ibatis.logging.Log;import org.apache.ibatis.logging.LogFactory;import org.apache.ibatis.logging.jdbc.ConnectionLogger;import org.springframework.boot.a原创 2021-09-01 22:25:04 · 125 阅读 · 0 评论 -
MyBatis框架版本升级方案
目前产品版本中Spring、MyBatis的相关版本如下所示<spring.version>3.2.10.RELEASE</spring.version><mybatis-spring.version>1.1.1</mybatis-spring.version><mybatis.version>3.1.1</mybatis.version>考虑到这些版本历史悠久,而且日志信息不全,甚至存在一些bug,另外这些版本也不能与Spr原创 2021-07-07 09:03:57 · 948 阅读 · 0 评论 -
MyBatis源码学习系列文章目录
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段MyBatis工作流程-数据访问阶段MyBatis工作流程-与Spring整合...原创 2021-04-24 21:44:25 · 282 阅读 · 0 评论 -
动态数据源循环依赖问题
假如在项目中定义动态数据源,以下配置中DynamicDataSource是org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource的子类 @ConfigurationProperties("spring.datasource.source") @Bean public DataSource sourceDataSource() { return DruidDataSourceBuilder原创 2020-12-25 15:37:29 · 3146 阅读 · 3 评论 -
关于MyBatis配置文件读取优先级的问题
文章目录 前言 一、系统属性设置方式 1、外部配置文件 2、xml配置 3、接口设置 二、以上方式加载优先级问题 三、占位符指定默认值注意事项 总结 前言MyBatis支持在配置文件和mapper文件中使用占位符,而替换这些占位符的系统属性可以通过引入外部配置文件、xml配置和通过接口传入。提示:以下是本篇文章正文内容,下面案例可供参考 一、系统属性设置方式 1、外部配置文件在mybatis的配置文件中如下配置即可<properties resource="org/mybati..原创 2020-12-24 14:46:28 · 907 阅读 · 0 评论 -
MyBatis工作流程-与Spring整合
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段MyBatis工作流程-数据访问阶段MyBatis工作流程-与Spring整合文章目录系列文章目录 前言与MyBatis相关的Beanbean实例化的流程1. Sql原创 2020-12-19 16:12:11 · 268 阅读 · 1 评论 -
MyBatis工作流程-数据访问阶段
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段MyBatis工作流程-数据访问阶段文章目录系列文章目录 前言 MapperMethod执行流程 Executor的三种模式Executor的查询流程 1. prepa原创 2020-12-18 18:01:03 · 331 阅读 · 0 评论 -
MyBatis工作流程-代理封装阶段
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段文章目录系列文章目录 前言 SqlSession 映射器实例 总结 前言 既然有了 SqlSessionFactory,顾名思义,我们可以从中获得SqlSessi原创 2020-12-16 18:13:13 · 200 阅读 · 0 评论 -
MyBatis工作流程-初始化阶段二
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二文章目录系列文章目录 前言 mapper解析目标 mapper解析流程 总结 前言 在上一章节当中我们主要是讲解了MyBatis工作流程初始化阶段的第一步,解析配置文件。解析配置文件主要使用的XMLC原创 2020-12-15 20:18:33 · 258 阅读 · 0 评论 -
MyBatis工作流程-初始化阶段一
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段文章目录系列文章目录 前言 MyBatis工作流程简介 MyBatis初始化 1. 构造XMLConfigBuilder对象 2. 解析配置文件 总结 前言 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的原创 2020-12-11 21:55:56 · 232 阅读 · 0 评论 -
MyBatis反射模块
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块文章目录系列文章目录 前言 MyBatis反射模块 总结 前言 MyBatis作为一个ORM框架,除了将对象存储到数据库(对象属性与数据库字段的映射),同样还要考虑将数据库字段映射为对象的属性。比如一个非常简单的查询语句City findByState(@Param("st原创 2020-12-10 20:14:51 · 602 阅读 · 0 评论 -
MyBatis缓存模块(二级缓存深入理解)
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)文章目录系列文章目录 前言 Blocking cache 二级缓存的真实实现 eviction算法 总结 前言 在前面介绍二级缓存的时候,我们说到了org.apache.ibatis.cache.decorators.TransactionalCache这个类的注释,对应的内容如下:The 2n原创 2020-12-04 16:24:57 · 555 阅读 · 1 评论 -
MyBatis数据源
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源文章目录系列文章目录 前言 MyBatis数据源概览 从连接池获取连接popConnection 归还连接到连接池pushConnection 总结 前言在上一章中我们介绍了MyBatis中的日志增强功能,通过创建JDBC关键模块Connection等的代理增加了日志功能,Connection用于创建客户端与数据库服务器的连接,这个连接是基于原创 2020-12-03 20:04:23 · 282 阅读 · 0 评论 -
MyBatis日志增强
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强文章目录系列文章目录 前言 MyBatis日志增强简单介绍 MyBatis日志增强源码分析 一个配置解决所有MyBatis日志的开关问题 总结 前言在上一章当中我们介绍了MyBatis的日志模块没有自己的具体实现,而是通过适配器模式兼容了其它主流日志组件的功能。这样通过org.apache.ibatis.logging.Log就可以打印日志了。本章我们来聊一聊My原创 2020-12-03 14:34:14 · 872 阅读 · 0 评论 -
MyBatis日志模块
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块文章目录系列文章目录 前言 MyBatis日志实现 优雅加载日志组件 前言MyBatis定了自己的Log接口以及级别,但是并没有考虑自己,而是使用第三方的日志,但是第三方日志多种多样而且日志级别也不同,MyBatis是如何对接的呢?如果当前环境中存在多个第三方的日志插件,MyBatis又该如何选择才能保证日志正常而又不会出现异常呢? MyBatis日志实现首先看一下MyBatis的原创 2020-12-02 17:58:06 · 252 阅读 · 0 评论 -
MyBatis二级缓存
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存文章目录系列文章目录 前言 MyBatis二级缓存详解 总结 前言MyBatis为了减少对数据库的查询,避免频繁的数据库交互,提供了一级缓存和二级缓存。上一章中我们详细从源码角度讲解了一级缓存的方方面面,本章我们继续从源码的角度分析二级缓存提示:以下是本篇文章正文内容,下面案例可供参考 MyBatis二级缓存详解在上一章中我们分析一级缓存,主要的源码都在org.apache.ibatis.executo原创 2020-12-01 20:22:18 · 265 阅读 · 0 评论 -
MyBatis一级缓存
系列文章目录MyBatis开发要点MyBatis缓存文章目录系列文章目录 前言 一、一级缓存 总结 前言MyBatis为了减少对数据库的查询,避免频繁的数据库交互,提供了一级缓存和二级缓存。本文将对一级缓存和二级缓存进行介绍,同时结合源码说明MyBatis缓存存在的问题提示:以下是本篇文章正文内容,下面案例可供参考 一、一级缓存一级缓存在MyBatis中对应的属性为org.apache.ibatis.executor.BaseExecutor#localCache。在构造Bas原创 2020-11-30 20:19:55 · 220 阅读 · 0 评论 -
MyBatis开发要点
系列文章目录文章目录系列文章目录 前言 一、为什么需要ORM框架 二、MyBatis快速入门1. 加入MyBatis的映射文件2. 加入MyBatis的核心配置文件3. 对应代码 三、MyBatis开发要点1. resultType还是resultMapresultTyperesultMap到底应该用resultType还是resultMap2. 怎么传递多个参数3. 怎么获取主键4. SQL元素和SQL的参数5. 动态SQL6. 使用MyBatis怎么进行批量的操作7. 关联查询关联查询几个需要注意原创 2020-11-30 18:53:48 · 269 阅读 · 0 评论 -
兼容Oracle与MySQL的那些事(分页问题)
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、MyBatis提供的RowBounds参数二、MyBatis提供的databaseId方式三、Mybatis-PageHelper解决方案四、MyBatis-Plus解决方案总结前言分页对于一个系统来说通常都是不可回避的问题,本文倒不是仔细分析其中的性能问题(索引优原创 2020-11-10 11:31:39 · 1632 阅读 · 1 评论 -
兼容Oracle与MySQL的一些事
文章目录前言一、字段类型差异二、函数差异 1、几种兼容方案a. 利用Mybatis的特性b. 是否存在相同的函数c. 自定义同名函数三、语法差异四、锁的差异总结前言由于公司目前主要使用的数据库为Oracle,然后部分兼容MySQL,后期会考虑全部支持Oracle和MySQL。由于二者的各种差异,我们必须有一套可行的方案减少工作量。在兼容Oracle与MySQL的那些事中我们已经仔细讨论过在数据层对多数据库的支持了,接下来的目标就是结合这种支持同时考虑其他手段达到目标了。本文从以下几点来谈一下对兼容考原创 2020-11-09 10:56:58 · 2078 阅读 · 7 评论 -
兼容Oracle与MySQL的那些事
文章目录前言一、MyBatis兼容多数据的方式 1、databaseIdProvider二、使用步骤1.引入库2.读入数据总结前言一个系统要兼容多种数据库应该是很多系统都要面对的问题。曾经,Hibernate作为数据库层的王者,风光了几十年,说实在话,它在兼容多种数据库方面确实方便且功能强大,通过方言(dialect)就可以了。但是,目前笨重的Hibernate已经渐渐走出了历史舞台,MyBatis以轻巧性能高成为数据层的事实框架,而且扩展也非常之多。所有本章主要只会涉及到MyBatis中的相关知识原创 2020-11-03 20:30:37 · 1095 阅读 · 2 评论 -
Spring容器中获取SqlSessionFactoryBean类型Bean失败
引言:今天在公司里测试遇到一个bug先上代码:private static SqlSessionFactory getSqlSessionFactory() throws Exception { if (sqlSessionFactory == null) { SqlSessionFactoryBean sqlSessionFactoryBean = SpringBeanUtils.g...原创 2020-04-13 21:50:44 · 6462 阅读 · 0 评论
分享