mybatis-3.4.6工作原理介绍
2017-11-08 14:53
507 查看
1、Mybatis的主要组件包括:SqlSessionFactory、SqlSession、Mapper
①SqlSessionFactory是用来获取mybatis XML配置文件中的配置信息,将配置文件中的XML标记元素解析成对应的对象,比如Environment,以及创建SqlSession通过openSqlSession
②SqlSession是用来与数据库建立连接,并且操作Mapper进行基本的增删改查
③Mapper是用来对数据库进行增删改查等操作
2、Mybatis基本工作流程
①获取mybatis的配置文件,通过XMLConfigBuilder解析xml中的各元素,得到Configuration对象构造SqlSessionFactory对象,
②通过SqlSessionFactory获取SqlSession,与数据库建立会话连接
③通过SqlSession根据具体的Mapper接口类型获取具体的Mapper接口代理实现类,进行数据库的操作。
3、mapper的不同配置,mybatis是如何工作的?
3.1.最常见的一种配置
①XMLConfigBuilder类通过mapperElement获取对应的元素标签,如果子元素标签是resource
②获取resource、url、class值
③如果resource!=null and url==null and class== null的话,XMLMapperBuilder.parse解析Mapper.xml,并将xml中解析到的namespace对应的Mapper接口放入到MapperRegisty
④MapperRegisty.addMapper(Class type)为每个Mapper接口对应一个new MapperProxyFactory<T>(type)用于生成代理实现类(JDK动态代理MapperProxy)
⑤resource==null and url!=null and class==null的话,会先从远程服务器获取到对应的xml配置文件的流,接下来的操作跟③④步一样
⑥resource==null and url==null anf class!=null的话直接,加载对应的class类,接下的步骤如④一样
可以总结一下resource、url、class有且只能使用一个,如果同时存在两个或者三个直接抛出BuilderException异常
3.2.如果Mapper.xml文件过多,你总不能一个一个的配置吧,那样岂不是很累,mybatis提供了通过package的方式解决此类问题
①XMLConfigBuilder类通过mapperElement获取对应的元素标签,如果元素标签是package
②获取name值(Mapper接口对应的包路径),获取包路径下的所有Mapper接口class类
③MapperRegisty.addMapper(Class type)为每个Mapper接口对应一个new MapperProxyFactory<T>(type)用于生成代理实现类(JDK动态代理MapperProxy)
①SqlSessionFactory是用来获取mybatis XML配置文件中的配置信息,将配置文件中的XML标记元素解析成对应的对象,比如Environment,以及创建SqlSession通过openSqlSession
②SqlSession是用来与数据库建立连接,并且操作Mapper进行基本的增删改查
③Mapper是用来对数据库进行增删改查等操作
2、Mybatis基本工作流程
①获取mybatis的配置文件,通过XMLConfigBuilder解析xml中的各元素,得到Configuration对象构造SqlSessionFactory对象,
②通过SqlSessionFactory获取SqlSession,与数据库建立会话连接
③通过SqlSession根据具体的Mapper接口类型获取具体的Mapper接口代理实现类,进行数据库的操作。
3、mapper的不同配置,mybatis是如何工作的?
3.1.最常见的一种配置
<mappers> <mapper resource="org/apache/ibatis/autoconstructor/AutoConstructorMapper.xml"/> </mappers>工作流程:
①XMLConfigBuilder类通过mapperElement获取对应的元素标签,如果子元素标签是resource
②获取resource、url、class值
③如果resource!=null and url==null and class== null的话,XMLMapperBuilder.parse解析Mapper.xml,并将xml中解析到的namespace对应的Mapper接口放入到MapperRegisty
④MapperRegisty.addMapper(Class type)为每个Mapper接口对应一个new MapperProxyFactory<T>(type)用于生成代理实现类(JDK动态代理MapperProxy)
⑤resource==null and url!=null and class==null的话,会先从远程服务器获取到对应的xml配置文件的流,接下来的操作跟③④步一样
⑥resource==null and url==null anf class!=null的话直接,加载对应的class类,接下的步骤如④一样
可以总结一下resource、url、class有且只能使用一个,如果同时存在两个或者三个直接抛出BuilderException异常
3.2.如果Mapper.xml文件过多,你总不能一个一个的配置吧,那样岂不是很累,mybatis提供了通过package的方式解决此类问题
<mappers> <package name="org/apache/ibatis/autoconstructor"/> </mappers>工作流程:
①XMLConfigBuilder类通过mapperElement获取对应的元素标签,如果元素标签是package
②获取name值(Mapper接口对应的包路径),获取包路径下的所有Mapper接口class类
③MapperRegisty.addMapper(Class type)为每个Mapper接口对应一个new MapperProxyFactory<T>(type)用于生成代理实现类(JDK动态代理MapperProxy)
相关文章推荐
- Mybatis中SqlMapper配置的扩展与应用详细介绍(1)
- Mybatis 拦截器介绍/自动分页page
- webService 的工作原理的介绍
- mybatis介绍级一级缓存,二级缓存
- 简单介绍百度蜘蛛的工作原理
- 【MyBatis源码全面解析】MyBatis一二级缓存介绍
- 陕西单机除尘器工作原理与分类介绍
- Mybatis拦截器介绍及分页插件
- Mybatis源代码分析之包间依赖介绍(一)
- J2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 技术介绍
- JDK JRE JVM概念以及JVM工作原理的简单介绍
- Mybatis之工作原理
- Mybatis介绍及学习视频
- Puppet自动化工具工作原理介绍
- MyBatis:SQL语句中的foreach标签的详细介绍
- PCB电源 - 开关电源介绍、工作原理、电路图
- 漫谈Github与开源,Git介绍以及Git的思想和基本工作原理 Git工作流程
- mybatis的概念介绍
- mybatis的工作原理
- Mybatis工作原理