![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mybatis
崩玉~雅
步履蹒跚
展开
-
花里胡哨系列之Mybatis源码终篇---感悟(九)
一.Mybatis回顾 Mybatis源码终于要结束了,这个系列一共写了九篇博客,基本上算是把Mybatis的各个功能模块都分析过一遍。最精华的部分个人认为是缓存模块,面试也常考。其实回过头来想想,Mybatis源码给我的感觉是小巧,精致的,并没有复杂的继承结构(spirng这块就让人头大);而且 Mybatis中的设计模式也用到了很多,如装饰者,模板方法,动态代理等等,有兴趣大家可以研究一下。Mybatis其它模块,如延迟加载,自增id获取,插件机制就留给大家自行分析了。二.源码技巧...原创 2020-07-28 11:03:18 · 183 阅读 · 0 评论 -
花里胡哨系列之Mybatis源码---数据源(八)
一.Mybatis数据源介绍Mybatis的提供三种数据源,UNPOOLED,POOLED,JNDIUNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并原创 2020-07-28 09:58:51 · 177 阅读 · 0 评论 -
花里胡哨系列之Mybatis源码---结果映射(七)
一.结果映射介绍 在映射文件中,Mybatis可以根据配置,自动将查询结果封装成对象。常见的结果配置有: 1.通过 resultType 映射 <select id="selectFromAuthor" parameterType="java.lang.String" resultType="org.apache.ibatis.domain.blog.Author"> select * from Author where id = #{id} and u...原创 2020-07-27 15:06:21 · 552 阅读 · 0 评论 -
花里胡哨系列之Mybatis源码---缓存机制(六)
一.缓存机制介绍 在默认情况下,Mybatis会启用缓存,俗称一级缓存,没办法关闭的。。 当然可以配置缓存,俗称二级缓存。当初学Mybatis的时候,视频里的老师说一级缓存的生命周期是整个SqlSession,二级缓存的生命周期是整个Mapper.xml ,云里雾里的。接下来以源码的角度看看缓存是如何运作的吧。 Mybatis在查询的时候,会先查二级缓存,如果没有,再查一级缓存。就以sql执行流程开始分析。二.缓存分析 SqlSession是sql执行的关键,Sq...原创 2020-07-23 19:13:36 · 140 阅读 · 0 评论 -
花里胡哨系列之Mybatis源码---参数解析(五)
一.基本介绍本节分析的主要内容是:Mybatis如何将传入的参数填充到Sql语句当中。举个例子:映射文件:<mapper namespace="org.apache.ibatis.mytest.MyDao"> <insert id="insertAuthor" parameterType="org.apache.ibatis.domain.blog.Author"> insert into Author (id,username,password,email,原创 2020-07-23 13:55:19 · 528 阅读 · 0 评论 -
花里胡哨系列之Mybatis源码---SQL执行流程(四)
一.本章概述 对于Mybatis的配置文件,映射文件在之前的博客已经分析过,之后正式进入Sql执行分析阶段。Sql执行整体过程还是比较清晰的,但是其中有很多细节值得琢磨。 Sql执行过程涉及到的模块: 1.SqlSession获取 2.参数解析 3.缓存机制 4.连接获取 5.结果映射 这章计划先把sql执行流程串起来,有个基本的执行印象,然后再各个击破,抽丝剥茧分析模块细节。二.基本用法 在获取到 SqlSessi...原创 2020-07-21 15:49:21 · 135 阅读 · 0 评论 -
花里胡哨系列之Mybatis源码分析---映射文件解析(三)
一:映射文件介绍 MyBatis 的真正强大在于它的语句映射,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。简单说:就是写SQL代码的地方。SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出):cache– 该命名空间的缓存配置。 cache-ref– 引用其它命名空间的缓存配置。 r...原创 2020-07-20 17:04:41 · 303 阅读 · 2 评论 -
花里胡哨系列之Mybatis源码---配置文件解析(二)
一.配置文件介绍 官网描述:MyBatis 的配置文件会深深影响 MyBatis 行为的设置和属性信息 配置文件基本结构二.配置文件解析流程String resource = "org/mybatis/example/mybatis-config.xml";//将 配置文件路径转为输入流InputStream inputStream = Resources.getResourceAsStream(resource);//根据输入流 创建SqlSessionFac...原创 2020-07-17 19:24:25 · 311 阅读 · 0 评论 -
花里胡哨系列之Mybatis源码 ----前序(一)
一.基本介绍 已经好久没写博客了,其实心里一直想着写的,但就是静不下来。忽然醒悟不能在堕落下去,自己扶自己起来,逼着自己学习。老实说,之所以看源码,最开始纯粹是因为工作太闲,不敢相信吧。当自己不经意间成为工具人的时候,是时候想办法提高,改变自己了。 看源码过程是痛苦的,枯燥的,不断的调试。但是在这个过程中,对于思维推理能力的锻炼还是有成效的,希望大家能坚持!二.Mybatis基本介绍 对于Mybatis的用途,特性以及和其他框架比较,网上介绍一大堆,天花乱坠,就不在赘述。我这里以源码...原创 2020-07-17 10:46:18 · 144 阅读 · 0 评论 -
Mybatis总结一——日期比较,参数传递,Mapper文件的编写
1 参数传递 (1)如果不想把参数放在一个对象内封装,使用多个参数。 Dao接口层方法传参: Integer selectAnnualSales(@Param("tenantId")String tenantId,@Param("beginDate") String beginDate,@Param("endDate")...原创 2018-12-04 17:35:06 · 12011 阅读 · 0 评论