Mybatis原理执行流程
Mybatis介绍
- MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs) - 持久层: 可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏,在断电或者其他情况下,重新开启系统仍然可以读取到这些数据。
- 优点: 可以使用巨大的磁盘空间存储相当量的数据,并且很廉价
- 缺点:慢(相对于内存而言)
为什么使用Mybatis
在我们传统JDBC中,我们除了需要自己提供SQL外,还必须Connection、Statment、ResultSet、不仅如此,为了访问不同的表,不同字段的数据,我们需要些很多雷同模板化的代码,闲的繁琐又枯燥
而我们在使用了MyBatis之后,只需要提供SQL语句就好了,其余的诸如:建立连接、操作Statment、ResultSet,处理JDBC先关异常等等都可以交给MyBatis去处理,我们的关注点于是可以就此集中在SQL语句上,关注在增删改查这些操作层面上.
并且MyBatis支持使用简单的XML或注解来配置和映射原生信息,将接口和java的POJOs(Plain Old java Objects,普通的java对象)映射成数据库中的记录.
1.什么是Mybatis
MyBatis是一个持久层ORM框架.它内部封装了JDBC,使得开发更加简洁,更高效.
MyBatis使开发者只需要关注sql语句本身,简化JDBC操作,不需要在关注加载驱动、创建连接、处理SQL语句等繁杂的过程.
MyBatis可以通过xml或注解完成ORM映射关系配置.
- ORM框架:对象关系映射框架,Java的JavaBean (对象)与数据库的表(关系) 之间的对应关系。通过对象可以直接操作表。save(User) --> 用户数据进入表中
2.什么是ORM?
ORM的全程是Object Relational Mapping, 即对象关系映射.
描述的对象和表之间的映射.操作java对象,通过映射关系,就可以自动操作数据库.
在ORM关系中,数据库表对应Java中的类,一条记录对应一个对象,一个属性对应一个列.
常见的ORM框架:Mybatis、Hibemate
总流程:
根据配置文件(全局配置文件和sql映射文件)初始化configuration对象。
创建一个defaultSqlSession对象,包含Configuration及Executor(根据全局配置文件中defaultExecutorType创建对应的Executor)
DefaultSqlSession.getMapper拿到Mapper接口对应的MapperProxy
MapperProxy里有DefaultSqlSession
执行增删改查
-
1.调用DefaultSqlSession增删改查
-
2.创建StatementHandler (同时创建ParameterHandler,ResultSetHandler)
-
3.调用StatementHandler预编译参数以及设置参数值 使用ParameterHandler给sql设置参数
-
4.调用StatementHandler增删改查
-
5.ResultSetHandler封装结果
参考:https://www.cnblogs.com/xiaoeyu/p/11592537.html
本文地址:https://blog.csdn.net/Strangerrainyday/article/details/108208097