MyBatis基本知识点总结
MyBatis简介
MyBatis是一个支持普通SQL查询,存储过程以及高级映射的持久层框架。MyBatis框架也称为ORM(对象关系映射)框架。所谓的ORM是一种为解决面向对象与关系型数据库中数据类型不匹配的技术,它通过描述Java对象与数据库表之间的映射关系,自动将Java应用程序中的对象持久化到关系型数据库的表中。
Hibernate与MyBatis的区别:
1、Hibernate是一个全表映射的框架,MyBatis是一个半自动映射的框架
2、通常开发者只需定义好持久化对象到数据库表的映射关系就可通过Hibernate提供的方法完成持久化的操作;而MyBatis需要手动匹配POJO、SQL和映射关系
3、开发者并不需要熟练掌握SQL语句的编写,Hibernate会根据指定的存储逻辑,自动生成对应的SQL;而MyBatis需要手动编写SQL,可配置动态SQL,并对SQL进行优化,可通过配置决定SQL的映射规则,支持存储过程
4、Hibernate对多表关联时,SQL查询的支持性差,更新数据时,需要发送所有字段,不支持存储过程,不能通过优化SQL来优化性能等。
MyBatis的工作原理
1)读取MyBatis配置文件:mybatis-config.xml为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息,例如数据库连接信息
2)加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在MyBatis配置文件mybatis-config.xml中加载。mybatis-config.xml文件可以加载多个映射文件,每个文件对应数据中的一张表。
3)构造会话工厂:通过MyBatis的环境等配置信息构建会话工厂SqlSessionFactory。
4)创建会话对象:由会话工厂创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。
5)Executor执行器:MyBatis底层定义了一个Executor接口来操作数据库,它将根据SqlSession传递的参数动态的生成需要执行的SQL语句,同时负责查询缓存的维护;
6)MappedStatement对象:在Executor接口的执行方法中有一个MappedStatement类型的参数,该参数是对映射信息的封装,用于存储要映射的SQL语句的id、参数等信息。
7)输入参数映射:输入参数类型可以使Map、List等集合类型,也可以是基本数据类型和POJO类型。
8)输出结果映射:输出结果类型可以是Map、List等集合类型,也可以是基本数据类型和POJO类型。
推荐一个对MyBatis讲的比较详细的链接:
MyBatis详细教程