
mybatis
文章平均质量分 92
爱写书的程序员
谦谦君子,温文如玉。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mybatis源码解读(九):reflection 包下 MetaObject、Reflector、MetaClass详解
功能reflection 包下的类主要负责的功能是 mybatis 反射实例化对象以及赋值,mybatis之所以可以将返回结果封装成pojo实体类,都是通过reflection包下的相关类通过反射去完成这个操作的。reflection 包下有几个核心的类,MetaObject、Reflector、MetaClass、以及ObjectWrapper。它的这个设计思路是,首先将一个class的所有的字段、方法、构造等信息全部都存在 reflector 中,然后再通过 metaObject 的静态方法构造一个原创 2020-07-13 00:45:46 · 3004 阅读 · 1 评论 -
MyBatis源码解读:概要
Mybatis简介Mybatis是一款优秀的持久层框架,在国内而言还是比较受欢迎的,无论是分布式还是微服务还是兴起的云原生在与数据库的交互这一层大多数人还是会很愿意使用Mybaits来集成的,它有丰富的社区以及各种场景的现有解决方案,已经很成熟,所以翻阅一下它的源码知道他的运行原理是很有价值必要的。Mybatis的架构其实Mybatis的源码是很简单的,架构设计也很清晰明了,作为与数据库直接...原创 2020-01-24 22:56:40 · 353 阅读 · 0 评论 -
mybatis源码解读:builder构建者(一)
其实一个框架或者是系统要想运转,支撑他们运行的规则很重要,比如游戏如果没有游戏规则,那么就会变得毫无游戏体验,乃至一个社团或者公司可以健康高速的运转,也离不开一个强壮的并且必须要遵守的规则,如果没有奖罚措施,公司倒闭是迟早的事情。对于mybatis来说,如何让一段xml配置可以识别为它自己可以理解的东西,这其实就是mybatis的开发团队定制好的一段规则,然后让大家来遵守,如果是你自己写框架,那么这个规则就是由你来定制了,哈哈。builderbuilder下的类是mybatis解析xml的核心。.原创 2020-05-29 00:59:27 · 1735 阅读 · 0 评论 -
mybatis源码解读(二):XMLConfigBuilder详解
功能XMLConfigBuilder要完成的最主要的功能其实就是解析xml配置文件,其中分为了这几步第一步,是构建一个叫做 XPathParser 的类,这个类主要是负责对xml的声明校验以及将xml解析成为document,mybatis解析xml用的是原生的dom解析。第二步,得到document之后就是configuration的构造,首先会通过XPathParser 解析document的每个节点,调用的是XPath将每个节点解析成为XNode第三步,得到XNode之后就是解析配置文件中的配原创 2020-05-31 02:00:22 · 2011 阅读 · 0 评论 -
mybatis源码解读(三):XMLMapperBuilder详解
功能在之前的工作中 XMLConfigBuilder 已经将 configuration 配置信息都解析过了,接下来就是mapper映射文件的解析。XMLMapperBuilder是专门负责解析mapper文件的。第一步:首先根据你配置的mapper文件的路径,resouce、url或者是class、package来分别区分对待找到路径,如果是resource、url会有一个流资源的读取来解析,class与package则是另一种方式,通过MapperProxy代理来完成。第二步:获取到资源,就是对常原创 2020-06-07 01:28:04 · 3395 阅读 · 0 评论 -
mybatis源码解读(四):XMLStatementBuilder详解
功能XMLMapperBuilder 中会将 mapper 映射文件中除 CRUD 外的标签解析验证,轮到CRUD标签的时候,是交给专门的类去做处理的,也就是XMLStatementBuilder。第一步:解析一些较基本的属性,比如 id、databaseId(多数据库配置)、useCache(是否启动二级缓存)、flushCache(只要语句调用就刷新缓存)等。第二步;替换sql中的include标签,将sql处理成为一个完整的sql第三步:处理主键生成策略,mybatis 默认使用的是 NoKe原创 2020-06-19 00:41:57 · 2021 阅读 · 0 评论 -
mybatis源码解读(五):XMLScriptBuilder详解-各种SQLNODE
功能动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦,诸如 foreach、set这些标签,在我们写sql的时候会提供很大的方便。mybatis 解析动态sql的这种能力是由 XMLScriptBuilder 类完成的。第一步:解析sql,区别当前的sql是静态文本sql还是带标签的动态sql,原创 2020-06-21 01:48:09 · 2115 阅读 · 1 评论 -
mybatis源码解读(六):SqlSession详解以及事务工厂
功能SqlSession 是使用 MyBatis 的主要 Java 接口,我们可以通过它来执行一些命令,获取映射器示例和管理事务,所以可以将SqlSession看成是管理mybatis的一次会话,不过它也确实是会话的意思,一次api请求维护一个SqlSession。 //将配置文件通过io流的方式打开 InputStream inputStream= Resources.getResourceAsStream("org/apache/ibatis/test/MyBatisConf原创 2020-06-23 01:04:41 · 2199 阅读 · 0 评论 -
mybatis源码解读(七):Executor详解
功能在 mybatis 中执行一次查询时,有个非常重要的类就是 Executor,Executor 有些类似是mybatis心脏一样的作用,它负责这次执行操作的资源调度、流程执行等功能。这个类是由几个实现类的,在前边已经分析过,mybatis默认的策略是 SimpleExecutor ,它完全继承自 BaseExecutor,没有特殊的地方。Execute所要完成的工作:根据当前的配置的id找到MappedStatement,然后处理sqlSource拿到BoundSource(),在这里会顺便去检原创 2020-07-03 00:22:19 · 1884 阅读 · 0 评论 -
mybatis源码解读(八):Statement 语句执行详解
功能mybatis执行语句的操作是由StatementHandler完成的,它会去获取连接并且根据你配置的一些参数来准备好连接数据库的statment语句,然后通过StatementHandler执行语句并且将结果根据你配置的ResultMap封装成为你想要的实体类。StatementHandler完成的操作:获取连接,根据配置准备数据库可执行的statement语句。执行语句通过ResultSetHandler根据resultMapping封装成为你想要的的实体对象UMLStateme原创 2020-07-08 00:58:35 · 3936 阅读 · 0 评论