MyBatis
文章平均质量分 93
skyline_wx
这个作者很懒,什么都没留下…
展开
-
Mybatis源码学习(四)Mapper的整体流程
这里写目录标题起点getMapper起点回到最初的起点,我们回顾一下mybatis执行一次查询的过程#mermaid-svg-l7ub8BRLxM1Oa7tH .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-l7ub8BRLxM1Oa7tH .label text{fill:#333}#mermaid-sv原创 2021-03-16 23:48:39 · 361 阅读 · 0 评论 -
Mybatis源码学习(三)
Mybatis学习(三)typeHandlersmappertypeHandlerstypeHandlers的解析入口在这里org.apache.ibatis.builder.xml.XMLConfigBuilder#parseConfiguration跟之前的别名解析一样,也是分两种方式,一种是基于package的扫描,一种是一个一个的配置,处理diam如下:看下最后比较关键的代码吧:其实typeHandlers的注册就是Mybatis维护了一个javaType->jdbcTyp原创 2021-03-15 21:14:37 · 118 阅读 · 0 评论 -
Mybatis源码学习(二)缓存和别名处理器
Mybatis学习(二)缓存一级缓存二级缓存缓存总结typeAliasesVFS单例神奇的目录遍历方式缓存一级缓存Mybatis的一级缓存默认是开启的,并且,是SqlSession级别的,在默认情况下,是要是同一个SqlSession,就会复用相同的缓存,但是在使用flushCache="true"(这个是配置在SQL上的)可以在SQL执行之前flush掉缓存。同时,如果执行了insert、update、delete等操作,也会清除一级缓存重点:一级缓存仅仅是跟SqlSession相关的采坑:一级原创 2021-03-11 23:15:48 · 250 阅读 · 0 评论 -
Mybatis源码学习(一)Mybatis 数据库访问的流程
Mybatis入门ConfigSQLSessionFactorySQLSessionMapper需要注意的点:#{} 与 ${}1.1 #{} 是预解析,SQL中会被解析为?,最后通过传参处理,这种参数不会有有SQL注入的问题1.2 ${} 是字符串拼接,一般用于动态SQL,比如动态表名、动态列名、动态排序等,但是这种参数容易出现SQL注入的问题,一定要使用拦截器做好合法性校验BatchExecutor与foreach+value2.1 BatchExecutor是批量执行SQL,但是原创 2021-03-11 19:56:54 · 288 阅读 · 1 评论