mybatis-3.4.6工作原理介绍
来源:互联网 发布:淘宝助理如何上传宝贝 编辑:程序博客网 时间:2024/05/20 05:08
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)
阅读全文
0 0
- mybatis-3.4.6工作原理介绍
- Mybatis工作原理
- MyBatis工作原理
- Mybatis工作原理
- Mybatis 工作原理
- Mybatis工作原理
- Mybatis之工作原理
- mybatis的工作原理
- MyBatis的工作原理
- 触摸屏工作原理介绍
- Memcached 工作原理介绍
- Memcached 工作原理介绍
- Memcached 工作原理介绍
- JVM工作原理介绍
- Memcached工作原理介绍
- RAID5工作原理介绍
- memcache工作原理介绍
- VPN工作原理介绍
- Java面向对象习题
- nginx+resin session问题解决
- 内联元素空隙问题
- 找不到或无法加载主类 (慎用refactor这个快捷重命名方式)
- RBAC
- mybatis-3.4.6工作原理介绍
- 11.8のDAY1小结
- VMware 虚拟机软件的使用
- 关于VMware虚拟化6.0安装过程
- 银行卡收单业务____对账
- 299. Bulls and Cows
- sqlalchemy连接Oracle rac集群
- 【Bzoj1179】[Apio2009]抢掠计划atm
- c语言:getchar()