
MyBatis源码分析
文章平均质量分 62
MyBatis源码分析
xiaolyuh123
凡是过去,皆为序幕
展开
-
Spring Boot+Mybatis+Pagehelper分页
Spring Boot 集成MyBatis和Pagehelper分页插件mybatis-spring-boot-starter依赖树如下:pom配置<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...原创 2017-06-20 19:00:12 · 68329 阅读 · 12 评论 -
Spring boot 集成 Mybatis plugins(自定义插件)
MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed):从写SQLParameterHandler (getParameterObject, setParameters):处理参数ResultSetHandler (handleResultSets原创 2021-05-14 17:51:35 · 3576 阅读 · 0 评论 -
Mybatis 源码(六)Mybatis-Spring框架实现原理
我在使用mybatis-spring过程中一直有一个疑问,在Mybatis 源码(一)总揽中我提到过,SqlSession和Mapper对象的声明周期是方法级别的,也就是每个请求的SqlSession和Mapper对象是不一样的,是一个非单例的Bean。但是与Spring集成后,为什么我们可以直接注入Mapper对象,如果通过直接注入的话Mapper对象却成了单例的了?我们带着疑问来看下Myba...原创 2019-11-28 11:35:47 · 416 阅读 · 0 评论 -
Mybatis 源码(五)Mybatis 中的数据读写
数据读写的本质不管是哪种ORM框架,数据读写其本质都是对JDBC的封装,其目的主要都是简化JDBC的开发流程,进而让开发人员更关注业务。下面是JDBC的核心流程:注册 JDBC 驱动(Class.forName(“XXX”);)打开连接(DriverManager.getConnection(“url”,“name”,“password”))根据连接,创建 Statement(conn....原创 2019-11-28 11:35:01 · 339 阅读 · 0 评论 -
Mybatis 源码(四)Mybatis Excuter框架
我们在上一章介绍到,Mybatis会将所有数据库操作转换成iBatis编程模型,通过门面类SqlSession来操作数据库,但是我们深入SqlSession源码我们会发现,SqlSession啥都没干,它将数据库操作都委托给你了Excuter,如图:Excuter框架类图BaseExecutor在BaseExecutor定义了Executor的基本实现,如查询一级缓存,事务处理等不变的...原创 2019-11-28 11:34:02 · 405 阅读 · 0 评论 -
Mybatis 源码(三)Mybatis 代理模块
在使用Mybatis的时候大家可能都有一个疑问,为什么只写Mapper接口就能操作数据库?它的主要实现思想是:使用动态代理生成实现类,然后配合xml的映射文件中的SQL语句来实现对数据库的访问。Mybatis编程模型Mybatis是在iBatis上演变而来ORM框架,所以Mybatis最终会将代码转换成iBatis编程模型,而 Mybatis 代理阶段主要是将面向接口编程模型,通过动态代理转...原创 2019-11-28 11:33:22 · 284 阅读 · 0 评论 -
Mybatis 源码(二)Mybatis 初始化
Mybatis 初始化是由SqlSessionFactoryBuilder来完成的,主要的工作解析XML文件,并将解析的类容封装到Configuration类中,最后将Configuration类封装到SqlSessionFactory中并返回,自此初始化完成。完成对XML文件解析的是XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder三个类...原创 2019-11-28 11:32:45 · 290 阅读 · 0 评论 -
Mybatis 源码(一)总揽
整体架构这只是MySql的一个逻辑划分架构。接口层:通SqlSession类提供对数据库访问能力,隐藏了后续复杂的处理逻辑。核心处理层:主要负责执行SQL,并返回结果。基础支撑层:对一些基础功能进行封装,为核心处理层提供服务。代码结构Mybatis的代码结构非常工整,堪称完美的java编程规范教科书,当我们深入源码我们会发现,Mybatis的注释量相当少,那是因为基本上我们可以...原创 2019-11-28 11:32:03 · 337 阅读 · 0 评论 -
Mybatis 配置详解
完整配置mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><confi...原创 2019-11-28 11:31:25 · 338 阅读 · 0 评论 -
JDBC 核心要点
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。初始化H2数据库public class BaseTest { protected ...原创 2019-11-28 11:29:24 · 283 阅读 · 1 评论 -
mybatis-plus 2.x升级3.x注意点
2.0到3.0主要升级的点:升级 JDK 8 + 优化性能 Wrapper 支持 lambda 语法模块化 MP 合理的分配各个包结构重构注入方法,支持任意方法精简注入模式全局配置下划线转换消灭注入 AS 语句改造 Wrapper 更改为 QueryWrapper UpdateWrapper重构 分页插件 消灭固定分页模型,支持 Mapper 直接返回 IPage 接口新增 Res...原创 2019-11-28 11:28:16 · 6822 阅读 · 3 评论 -
Hibernate与 MyBatis的比较
最近做了一个Hibernate与MyBatis的对比总结,希望大家指出不对之处。第一章 Hibernate与MyBatisHibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。MyBatis 参考资料官网:转载 2015-04-29 21:47:09 · 512 阅读 · 0 评论 -
Spring Boot + Mybatis + Ehcache 二级缓存实例
二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同即最终执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。Mybatis默认没有开启二级缓存需要在setting全局参数...原创 2017-06-29 14:49:33 · 2752 阅读 · 1 评论 -
Spring Boot + Mybatis + 二级缓存实例(Ehcache,Redis)
使用Mybatis自带二级缓存MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。MyBatis 3 中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置。默认情况下是没有开启缓存的,除了局部的 session 缓存,可以增强变现而且处理循环 依赖也是必须的。要开启二级缓存,你需要在你的 SQL 映射文件中添加一行:<cache/>...原创 2017-06-27 10:45:38 · 7262 阅读 · 0 评论 -
Spring Boot集成Mybatis
1. 配置pom.xml引入mybatis-spring-boot-starter。 org.springframework.boot spring-boot-starter-parent 1.3.5.RELEASE UTF-8 UTF-8 1.8 org.springframework.b原创 2017-06-07 14:44:29 · 1354 阅读 · 0 评论 -
Druid简介(Spring Boot + Mybatis + Druid数据源【自己定制】)
Druid的简介Druid是一个非常优秀的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid是一个JDBC组件,它包括三个部分:基于Filter-Chain模式的插原创 2017-07-02 12:02:35 · 9591 阅读 · 0 评论 -
Druid简介(Spring Boot + Mybatis + Druid数据源【官方start】)
Druid的简介Druid是一个非常优秀的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid是一个JDBC组件,它包括三个部分:基于Filter-Chain模式原创 2017-07-18 18:20:23 · 2873 阅读 · 0 评论 -
Spring Boot + Mybatis + Redis二级缓存实例
二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同即最终执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。Mybatis默认没有开启二级缓存需要在setting全局参数...原创 2017-06-29 15:27:12 · 15577 阅读 · 10 评论 -
Mybatis Generator最完整配置详解 http://www.jianshu.com/p/e09d2370b796
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> resource:配置资源加载地址,使用resource,MBG从classpath开始找,比如com/myprojec转载 2016-06-02 10:30:23 · 1555 阅读 · 0 评论