Mybatis
文章平均质量分 78
鸣沙山
天上白玉京,十二楼五层,仙人抚我顶,结发授长生。
展开
-
Mybatis源码解析08-动态SQL、延迟加载、缓存、插件
动态 SQL 是 MyBatis 的强大特性之一。这样一旦title为空,则数据就会全部满足条件,如果数据量很大,一是会导致数据库端的压力,二是可能会占满虚拟机的内存,所以这个时候就可以利用mybatis的插件做点事件,我们可以针对Executor的query做一个插件(这里以mysql数据库为例)Mybatis的缓存有一级缓存与二级缓存,一级缓存是SqlSession级别的缓存,二级缓存是全局的或者说是namespace级别的缓存。Mybatis的动态SQL可以在运行时根据数据的不同,执行不同的SQL。原创 2023-02-22 22:40:19 · 240 阅读 · 0 评论 -
Mybatis 源码解析 07 - 关键组件 ResultSetHandler
根据我们配置的ResultMap可知有resultMap的id,类型,以及字段与表列名称的对应关系,这个复杂的过程主要就是从ResultSet中根据column_name获取值然后根据TypeHandler转换为Entity对应字段(属性)的值。可以看到同ParameterHandler一样,在创建StatementHandler实例调用BaseStatementHandler的构造器时,会创建ResultSetHandler。此方法也只有一个实现类:DefaultResultSetHandler。原创 2023-02-14 22:21:52 · 223 阅读 · 0 评论 -
Mybatis 源码解析 06 - 关键组件 ParameterHandler
ParameterHandler显然是用来处理参数的,主要是用来设置PreparedStatement的参数,接口只有两个方法,一个是获取参数对象,一个是设置PreparedStatement的参数。可以看到ParamenterHandler相对比较简单,主要是根据配置解析的ParameterMapping(参数映射)找到对应的TypeHandler和JdbcType,最终会调用到PreparedStatement的设置参数方法。此接口只有一个实现类:DefaultParameterHandler。原创 2023-02-14 21:51:29 · 208 阅读 · 0 评论 -
Mybatis源码解析05-关键组件StatementHandler
可以看到这两个核心组件的类图有相似之处,StatementHandler接口定义核心的方法,抽象类BaseStatementHandler提供一些非子类特有的行为,而子类则去实现自己特有的行为,而RoutingStatementHandler又用到了代理模式,这样让好具体的StatementHandler与上层代码解耦,上层代码面向StatementHandler接口编程即可。可以知道Statement是执行的关键,而上面StatementHandler的每一个都关乎SQL的执行。原创 2023-02-14 21:25:48 · 183 阅读 · 0 评论 -
JDBC关键部分简单梳理
JDBC定义了驱动(Driver)的接口,可以将驱动动态加载并交给DriverManger管理,且DriverManger可以当做Connection的工厂(提供了getConnection方法)。可以看到通过jdbc的接口我们可以和数据库交互,进行CRUD,达到预期目的,但是通过jdbc操作数据库较为麻烦,所以诞生了诸如Mybatis、Hibernate等一系列框架。然后可以看一下类图的关系。原创 2023-02-11 23:14:21 · 110 阅读 · 0 评论 -
Mybatis源码解析04-关键组件Executor
接下来看一下Executor,Executor是Mybatis的执行器,接口提供的主要功能有:1. 更新、查询、提交、回滚2. 缓存处理(一级、二级缓存 ),如创建缓存key、清理缓存等原创 2023-02-10 22:53:36 · 127 阅读 · 0 评论 -
Mybatis源码解析03-关键组件SqlSession
SqlSession是Mybatis的主要Java接口,通过此接口你可以执行命令、获取Mappers、管理事务。原创 2023-02-10 22:46:30 · 274 阅读 · 0 评论 -
Mybatis源码解析02-SQL执行概述
一般在使用mybatis的时候,会在DAO层设计一个*Mapper的接口,然后会有与之对应的文件,其namespace为接口class的全限定名,而里面的这些操作标签对应接口里面的方法。我们在Mapper接口打断点,然后执行到断点的时候,如下图所示:可以看到此时的Mapper接口对应的是这明显是一个由MapperProxy派生出来的代理类。原创 2023-02-04 19:26:09 · 227 阅读 · 0 评论 -
Mybatis 源码解析01 - 配置、启动加载
mybatis是目前非常流行的ORM框架,在其基础上还衍生了mybatis-plus)等优秀的框架。mybatis简单,易用,易扩展。接下来我们用一个简单的例子(几乎包含所有配置)来看一下mybatis相关的配置项下面是一个包含用户、商品、订单的DAO例子,关系图如下:MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 各属性介绍可以参考[官网](mybatis – MyBatis 3 | 配置)此示例项目的内容如下下面是mapper配置,即xml映射文件的配置,我原创 2023-01-19 14:52:08 · 489 阅读 · 0 评论