前言
-
本篇文章是Myabtis源码分析的第三篇,前两篇分别介绍了Mybatis的重要组件和围绕着Mybatis中的重要组件教大家如何阅读源码的一些方法。
-
今天接上一篇,围绕Mybatis中的
selectList()
来看一看Mybatis底层到底做了什么,有什么高级的地方。
环境准备
-
本篇文章讲的一切内容都是基于
Mybatis3.5
和SpringBoot-2.3.3.RELEASE
。 -
由于此篇文章是基于前两篇文章的基础之上,因此重复的内容不再详细赘述了。
撸起袖子就是干
-
二话不说,先来一张流程图,Mybatis六剑客,如下:
-
上图中的这六剑客在前面两篇文章中已经介绍的非常清楚了,此处略过。为什么源码解析的每一篇文章中都要放一张这个流程图呢?因为Mybatis底层就是围绕着这六剑客展开的,我们需要从全局掌握Mybatis的源码究竟如何执行的。
测试环境搭建
-
举个栗子:根据用户id查询用户信息,Mapper定义如下:
List<UserInfo> selectList(@Param("userIds") List<String> userIds);
-
对应XML配置如下:
<mapper namespace="cn.cb.demo.dao.UserMapper">
<!--开启二级缓存-->
<cache/>
<select id="selectList" resultType="cn.cb.demo.domain.UserInfo">
select * from user_info where status=1
and user_id in
<foreach collection="userIds" item="item" open="(" separator="," close=")" >
#{item}
<