概述
Mybatis作为半自动化的ORM框架,Mapper XML是关键,Mapper XML文件可以定义各种sql,并且可以映射到Mapper的方法上,还有一种方式就是在Mapper接口方法上添加注解。
Mapper XML解析
Mybatis使用XMLMapperBuilder解析Mapper XML文件,分别解析元素:
- 解析namespace:namespace需要设置成Mapper接口的全限定名
- 解析 <cache-ref/> <cache/>
解析<parameterMap/>,已经过时了,可以不管- 解析<resultMap/>:会转变成ResultMap对象,ResultMap 中的每一条结果字段的映射都会转换成ResultMapping对象,ResultMap对象会添加到Configuration
- 解析<sql/>
- 解析<select/><insert/><update/><delete/>,交给XMLStatementBuilder对象解析,每一个标签都对应一个MappedStatement对象,最终添加到Configuration,MappedStatement对象中包含最终执行的SQL语句等属性
Mybatis底层使用SqlSession来操作数据库,首先从Configuration中获取指定statement的MappedStatement,然后在执行其他数据库操作。所以Mapper接口的作用就是连接了用户程序和SqlSession,Mapper接口的代理实现会将接口方法,拼装成statement,交给SqlSession。
mybatis 使用的入口是Mapper接口的代理实现类,我们自己使用mybatis需要根据SqlSession获取Mapper接口代理实现,Spring集成的话已经把Mapper接口的代理实现类转成bean了,可以直接使用