mybaits源码
文章平均质量分 56
灰太狼_cxh
不会,我可以学;落后,我可以追赶;跌倒,我可以站起来;我一定行。
展开
-
mybatis源码解读:session包
session包是整个mybatis应用的对外接口包。1.SqlSession及其相关类1.1 SqlSession的生成链在进行查询操作时,只需要和SqlSession对象打交道,而SqlSession对象是由SqlSessionFactory生产出来的,而SqlSessionFactory又是由SqlSessionFactoryBuilder创建的。public class SqlSessionFactoryBuilder { public SqlSessionFactory原创 2021-02-14 19:55:49 · 575 阅读 · 2 评论 -
mybatis源码解读:executor包(错误上下文)
ErrorContext类是一个错误上下文,能够提前将一些背景信息保存下来。这样在真正发生错误时,便能将这些背景信息提供处理,进而给我们的错误排查带来便利。public class ErrorContext { // 获得当前操作系统的换行符 private static final String LINE_SEPARATOR = System.getProperty("line.separator","\n"); // 将自身存储进ThreadLocal,从而进行线程间的隔离 pr原创 2021-02-10 20:29:28 · 181 阅读 · 0 评论 -
mybatis源码解读:executor包(执行器功能)
executor包中的各个子包提供的功能,最终这些功能都由Executor接口及其实现类共同对外提供服务。Executor接口基于以下方法可以完成增,删,改查以及事务处理等操作。事实上,mybatis中的所有数据库操作是通过调用这些方法实现的。public interface Executor { ResultHandler NO_RESULT_HANDLER = null; // 数据更新操作,其中数据的增加、删除、更新均可由该方法实现 int update(MappedS...原创 2021-02-09 20:40:59 · 253 阅读 · 2 评论 -
mybatis源码解读:executor包(结果处理功能)
欢迎关注本人公众号:mybatis查询结果的处理需要完成的步骤有:1.处理结果映射中的嵌套映射等逻辑2.根据映射关系,生成结果对象3.根据数据库查询记录对结果对象的属性进行赋值4.将结果对象汇总为List,Map,Cursor等形式。1.结果处理功能其中executor包中的result子包将负责完成"将结果对象汇总为List,Map,Cursor等形式"的简单功能的一部分。result子包中主要有3个类:DefaultResultContext类、Default.原创 2021-01-31 22:10:34 · 240 阅读 · 0 评论 -
mybatis源码解读:executor包(参数处理功能)
欢迎关注本人公众号:sql语句中的参数赋值是有由executor包中的parameter子包完成的。parameter子包其实只有一个parameterHandler接口,它定义了2个方法:public interface ParameterHandler { Object getParameterObject(); void setParameters(PreparedStatement ps) throws SQLException;}Parameter.原创 2021-01-24 21:00:31 · 227 阅读 · 0 评论 -
mybatis源码解读:executor包(语句处理功能)
欢迎关注本人公众号:1.mybatis对多语句类型的支持在mybatis映射文件中传参数,主要用到#{} 或者 ${}.#{}:表示使用这种符号的变量会以预编译的形式赋值到sql片段中。${}:表示使用这种符号的变量会以字符串的形式直接插到sql片段中。mybatis中支持三种语句类型,不同语句类型支持的变量符号不同。mybatis的三种类型如下: STATEMENT:这种语句类型中,只会对sql片段进行简单的字符串拼接。只支持使用${}. PREPARED:这.原创 2021-01-13 22:15:05 · 134 阅读 · 0 评论 -
Mybatis源码解读:executor包(懒加载功能)
欢迎关注本人公众号:1.懒加载功能的使用要使用懒加载,需要在mybatis的配置文件中启用该功能。<setting><settingname="lazyLoadingEnable"value="true"/></setting>mybatis的懒加载的实现由executor包的loader子包支持。2.懒加载功能的实现2.1代理工厂ProxyFactory是创建代理类的工厂接口,其中的setProperties方法用来对工厂进行...原创 2021-01-06 22:09:43 · 198 阅读 · 0 评论 -
Mybatis源码解读:executor包(主键自增功能)
欢迎关注本人公众号:executor执行器包作为mybatis的核心将其他各个包凝聚在一起,会调用配置解析包解析出配置信息,会依赖基础包提供的基础功能,最终executor包将所有的操作串连在一起,通过session包向外暴露出一套完整的服务。1.主键自增功能在进行数据插入操作时,经常需要一个自增生成的主键编号,这既能保证主键的唯一性, 又能保证主键的连续性。mybatis的executor包中的keygen子包提供主键自增功能。1.主键自增的配置与生效mybat...原创 2020-12-26 12:18:15 · 366 阅读 · 0 评论 -
mybatis源码解读:transaction包(事务管理功能)
欢迎关注本人公众号:mybatis的transaction包是负责进行事务管理的包,该包内包含2个子包:jdbc子包中包含基于jdbc进行事务管理的类,managed子包中包含基于容器进行事务管理的类。1.事务概述事务即数据库事务,是数据库执行过程中的一个逻辑单元。事务有以下4个特性: Atomicity(原子性):事务必须被作为一个整体执行,要么全部执行, 要么全部不执行。不允许只执行其中的一部分。 Consistency(一致性):事务应该保证数据库从一致性状态...原创 2020-12-20 18:19:58 · 1006 阅读 · 0 评论 -
mybatis源码解读:cursor包
欢迎关注本人公众号:1.游标的使用在使用mybatis进行数据库查询时,经常会查询到大量的结果。游标可以解决处理大量数据时不是一次读入整个结果集,而是逐一读入和处理结果,这样可以减少对内存的占用。在mybatis中使用游标进行查询非常简单,映射文件不需要任何的变动,只需要在映射接口中标明返回值类型是Cursor。Cursor<User> selectAll();2.游标接口cursor包中源码非常简单,只有一个cursor接口和默认的实现类Defa..原创 2020-12-20 18:17:57 · 3137 阅读 · 0 评论 -
mybatis源码解读:cache包(缓存机制)
1.缓存机制在进行源码阅读时,通常可以以包为单位进行,因为包本身就是具有一定结构、功能的类的集合,但是,也总会有一些功能相对复杂,会横跨多个包。因此以功能为主线一次阅读多个包中的源码是必要的,能帮助我们理清功能实现。mybatis基于cache包中提供的缓存实现了两级缓存机制。1.一级缓存mybatis的一级缓存又叫本地缓存,与它相关的配置项有2个。1.在配置文件XML的setting节点,可选项有session与statement,分别对应了一次会话和一条语句,一级缓存的默认范围是se原创 2020-12-16 22:17:12 · 381 阅读 · 0 评论 -
mybatis源码解读:cache包(缓存基本功能)
1.简述:Mybatis每秒可能要处理数万条数据库查询请求,而这些请求可能是重复的。缓存能够减低数据库查询次数,提升mybatis的性能。mybatis缓存使得每次数据库查询请求都会优先经过缓存系统的过滤,只有没有命中缓存的情况下才会去查询数据库。cache包就是mybatis缓存能力的提供者。2.cache包结构与cache包接口cache包是典型的装饰器模式应用案例,在impl包存放实现类,在decorators包中存放了众多的装饰器类。而cache接口是实现类和装饰器类的共同接口。原创 2020-12-13 17:13:26 · 720 阅读 · 1 评论