MyBatis简介
MyBatis是一个优秀的基于Java的持久层框架,内部封装了JDBC,开发者只需关注SQL语句本身(即业务),而不用再花费精力处理如注册驱动、创建Connection、配置Statement等繁琐过程(即技术)。MyBatis的目标是实现业务和技术的解耦。
MyBatis通过xml或注解的方式将要执行的各种Statement、PreparedStatement等配置好,通过Java对象和Statement中SQL的动态参数进行映射生成最终执行的SQL语句,最后由MyBatis框架执行SQL并将结果映射成Java对象并返回。该过程称为ORM(Obejct Relational Mapping,对象关系映射)。这里的对象是POJO对象(Java原生对象)。
MyBatis只能在Java中使用。
体系结构

接口层
包含APIs:
- 数据查询
- 数据新增
- 数据更新
- 数据删除
- 获取配置
即增删改查和配置五类。
数据处理层
- 参数映射:把Java对象映射为数据库中的一个表,把对象的属性值映射到SQL语句的字段值
- 参数映射配置(通过配置进行映射)
- 参数映射解析
- 参数类型解析
- SQL解析:把参数映射后对SQL语句进行拼接和解析
- SQL获取
- SQL解析
- 动态SQL
- SQL执行:执行解析后的SQL语句
- SimpleExecutor
- BatchExecutor
- ReuseExecutor
- 结果映射:把SQL语句执行的返回结果映射会Java对象
- 结果映射配置
- 结果类型转换
- 结果数据拷贝
基础支持层
- 连接管理
- 事务管理
- 配置加载
- 缓存处理
- 配置框架
MyBatis与Hibernate
Hibernate框架提供了全面的数据库封装机制,实现了“全自动”ORM,即不仅实现了POJO对象和数据库表之间的映射,也实现了SQL的自动生成和执行。
相对的,MyBatis只是“半自动”ORM。其主要功能是POJO对象和SQL语句之间的映射关系。也就是说,MyBatis不会自动生成SQL语句,具体的语句需要程序员编写,然后通过SQL语句映射配置,将SQL所需的参数以及返回的结果字段映射到指定的POJO对象。
hibernate的缺点
自定义了HQL方言,来实现自动SQL。
- 增加了学习成本。
- 缺乏灵活性。
- 对多表联查不友好,只在单表操作有优势
- 查询效率比MyBatis略低
MyBatis的特点
- 其他都和hibernate相似,但是SQL语句由程序员写,所以提高了灵活性,提高了查询效率
- 在XML中配置SQL语句,实现了SQL语句与代码的分离,给程序的维护带来了很大便利
MyBatis架构图

- mybaits.xml : MyBatis配置文件
- mapper.xml : 配置POJO和SQL的映射关系
570

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



