为了使读者能够更加清晰的理解MyBatis程序,在正式讲解MyBatis入门案例之前,先来了解一下MyBatis程序的工作原理。
从上图可以看出,MyBatis框架在操作数据库时,大体经过了8个步骤。下面就对图6-4中的每一步流程进行详细讲解,具体如下。
(1)读取MyBatis配置文件mybatis-config.xml。mybatis-config.xml作为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息,其中主要内容是获取数据库连接。
(2)加载映射文件Mapper.xml。 Mapper.xml文件是SQL映射文件。 在文件中配置了用于操作数据库的SQL语句,需要将其加载到mybatis-config.xml中才能执行。 Mybatis-config.xml可以加载多个配置文件,并且每个配置文件对应于数据库中的一个表。
(3)构建会话工厂。通过MyBatis的环境等配置信息构建会话工厂SqlSessionFactory。
(4)创建SqlSession对象。由会话工厂创建SqlSession对象,该对象中包含了执行SQL的所有方法。
(5)MyBatis底层定义了一个Executor接口来操作数据库,它会根据SqlSession传递的参数动态的生成需要执行的SQL语句,同时负责查询缓存的维护。
(6)在Executor接口的执行方法中,包含一个MappedStatement类型的参数,该参数是对映射信息的封装,用来存储要映射的SQL语句的id、参数等。Mapper.xml文件中一个SQL对应一个MappedStatement对象,SQL的id即是MappedStatement的id。
(7)输入参数映射。 执行该方法时,MappedStatement对象定义了供用户执行SQL语句的输入参数(可以将其定义为Map,List类型,基本类型和POJO类型),并且Executor执行程序将使用MappedStatement对象输入 执行SQL对象之前的Java被映射到SQL语句。 这里,输入参数的映射过程类似于JDBC编程中为prepareStatement对象设置参数的过程。
(8)输出结果映射。在数据库中执行SQL语句之后,MappedStatement对象将定义SQL执行输出的结果(可以将其定义为Map和List类型,基本类型和POJO类型)。 Executor执行程序将使用MappedStatement对象执行SQL语句。 输出结果映射到Java对象。 将输出结果映射到Java对象的过程类似于在JDBC编程中分析结果的过程。
通过上面对MyBatis框架执行流程的讲解,相信读者对MyBatis框架已经有了一个初步的了解。对于初学者来说,上面所讲解的内容可能不会完全理解,现阶段也不要求读者能完全理解,这里讲解MyBatis框架的执行过程是为了方便后面程序的学习。在学习完MyBatis框架后,读者自然就会明白上面所讲解的内容了。
推荐阅读:java架构师培训:java最佳测试框架JBehave的基本介绍
如果你想了解更多关于java架构师的专业知识,可以加入JAVA架构师交流群:1160405674,里面都是同行,有资源分享包括但不限于(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。欢迎一到五年的工程师加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!