MyBatis介绍
MyBatis是一个优秀的持久层框架,它对JDBC的操作数据库的过程进行封装,使得开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动,创建connection,创建statement,手动设置参数,结果集检索等JDBC繁杂的过程代码。
MyBatis通过XML或者注解的方式将要执行的各种statement(statament,preparedStatement,CallableStatement)配置起来,并通过Java对象和statement中的SQL进行映射生成最终执行的SQL语句,最后由MyBatis框架执行SQL并将结果映射成Java对象并返回。
MyBatis 架构

-
MyBatis配置
SqlMapConfig.xml,此文件作为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息。mapper.xml文件即SQL映射文件,文件中配置了操作数据库的SQL语句,此文件需要在SqlMapConfig.xml中加载。 -
通过MyBatis环境等配置信息构造了
SqlSessionFactory即会话工厂 -
由会话工厂创建
sqlSession即会话,操作数据库需要通过sqlSession进行 -
MyBatis底层自定义了
Excutor执行器接口操作数据库,Excutor接口有两个实现,一个是基本执行器,一个是缓存执行器 -
Mapped Statement也是MyBatis一个底层封装对象,它包装了MyBatis配置信息以及SQL映射信息等,mapper.xml文件中一个SQL对应一个Mapped Statement对象,SQL的id既是Mapped statement的id -
Mapped Statement对SQL执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行SQL前将输入的Java对象映射至SQL中,输入参数映射就是JDBC编程中的对preparedStatement设置参数 -
Mapped Statement对SQL执行输出结果进行定义,包含HashMap、基本类型、pojo,Excutor通过Mapped Statement在执行SQL后将输出结果映射至Java对象中,输出结果映射过程相当于JDBC编程中对结果的解析处理过程
MyBatis与Hibernate
MyBatis不完全是一个ORM框架,它需要自己编写SQL语句,但是可以通过XML或者注解的方式灵活配置要运行的SQL语句,并将Java对象和SQL语句映射生成最终执行的SQL,最后将SQL执行结果再映射生成Java对象。MyBatis可以严格控制SQL执行性能,非常适合对关系数据模型要求不高的软件开发,但是灵活的前提是MyBatis无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套SQL映射文件,工作量大。
Hibernate关系映射能力强,数据库无关性好,对于关系模型要求高的软件可以提高代码效率。但是用好Hibernate要考虑如何设计O/R映射,在性能和对象模型如何权衡,需要较强的经验和能力。
下一篇:Mybatis学习笔记[3]之入门程序 https://blog.youkuaiyun.com/Rabbit_Judy/article/details/80849245
本文详细介绍了MyBatis框架的特点及工作原理,包括其对JDBC操作的封装、配置文件的使用、会话工厂和会话的概念,以及执行器接口和MappedStatement对象的作用。同时对比了MyBatis与Hibernate的不同之处。
1250

被折叠的 条评论
为什么被折叠?



