MyBatis的扩展点(plugins)
一、Mybatis概述
1. 框架简介
目标
了解什么是框架
理解框架解决的问题
讲解
1.1 什么是框架
框架是整个或部分应用的可重用设计,是可定制化的应用骨架。它可以帮开发人员简化开发过程,提高开发效率。
项目里有一部分代码:和业务无关,而又不得不写的代码==>框架
项目里剩下的部分代码:实现业务功能需要的逻辑代码
简而言之,框架是一个应用系统的半成品,开发人员在框架的基础上,根据业务需求开发功能。即:别人搭台,你唱戏。
1.2 框架解决了什么问题
框架主要是解决了技术整合问题,实现了项目和具体技术的解耦,提升项目的可维护性
一个应用系统,必定要选用大量的技术来完成业务需求,实现功能。这就导致应用系统依赖于具体的技术,一旦技术发生了变化或者出现问题,会对应用系统造成直接的冲击,这是应该避免的。
框架的出现,解决了这个问题:框架是技术的整合。如果使用了框架,在框架基础上进行开发,那么开发人员就可以直接调用框架的API来实现功能,而不需要关注框架的底层具体使用了哪些技术。这就相当于框架“屏蔽”了具体的技术,实现了应用系统功能和技术的解耦。
框架一般处于低层应用平台(如JavaEE)和高层业务逻辑之间

1.3 有哪些常见的框架
Mybatis:
框架职责:作用在dao层,负责数据库访问的框架。
框架介绍:
它原本是Apache的一个开源项目ibatis,后来迁移到了Google code,并改名为Mybatis;之后又迁移到了github上。
它是一个优秀的Java轻量级dao层框架,对JDBC进行了封装,使开发人员只需要关注SQL语句,而不需要关注JDBC的API执行细节。
Hibernate:
框架职责:作用在dao层,负责数据库访问的框架。
框架介绍:
Hibernate是一个完全面向对象的Dao层框架,封装程度非常高,开发人员可以完全以面向对象的方式操作数据库,甚至不需要编写SQL语句。
但是,正因为Hibernate的封装程度过高,导致它的执行效率受到了影响,是重量级框架。目前在国内使用的越来越少了。
SpringMVC:
框架职责:作用在web层,负责和客户端交互的框架。
框架介绍:
SpringMVC是Spring Framework的后续产品,受益于Spring框架的流行,并且因为SpringMVC使用简单、和Spring整合简单,导致SpringMVC框架在国内使用的也越来越多。
Struts1/Struts2:
框架职责:作用在web层,负责和客户端交互的框架。
框架介绍:
Struts1是比较老的框架,目前已经基本不使用了。
Struts2目前使用的也越来越少,逐步被SpringMVC代替
Spring:
框架职责:不是作用在某一层,而是实现web层、Service层、Dao层之间解耦的框架,是三层之间的粘合剂
框架介绍:Spring框架是为了解决应用开发的复杂性而创建的,任何Java应用都可以从Spring中受益。Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架。
2. Mybatis简介
2.1 JDBC的问题
JDBC是操作数据库的最基本的规范,它的功能简单单一,在使用时需要开发人员处理很多问题:
硬编码问题
大量的重复代码
性能问题
JavaBean和表数据的映射转换问题
2.2 ORM思想【面试】
ORM:Object Relation Mapping,对象关系映射思想。指把Java对象和数据库的表的字段进行关联映射,从而达到操作Java对象,就相当于操作了数据库。查询了数据库,自动封装成JavaBean对象
关系—>对象: 查询表数据,ORM框架自动帮我们把结果封装成JavaBean对象
对象—>关系: 插入数据、修改数据等等,ORM框架自动帮我们把JavaBean对象转换成对应的SQL语句
常见的ORM框架:
Hibernate:是完全ORM框架,实现了双向映射。简单功能更简单,复杂功能更复杂
关系—>对象:查询不用写SQL,也不用自己封装JavaBean
对象—>关系:DML也不用写DQL
Mybatis:是半ORM框架,只实现了单向映射
关系—>对象:查询不用自己封装JavaBean
对象—>关系:没有实现,还需要我们自己编写SQL语句
2.3 Mybatis介绍
Mybatis是一个优秀的Java轻量级持久层框架。apache的ibatis,后来托管到google code,后来又迁移到github上。 Mybatis官网:http://www.mybatis.org/mybatis-3/zh/index.html
它内部封装了JDBC,使开发人员只需要关心SQL语句,而不需要处理繁琐的JDBC步骤
它采用了ORM思想(半ORM),解决了实体和数据库映射的问题。只要提供好sql语句,配置了映射,Mybatis会自动根据参数值动态生成SQL,执行SQL并把结果封装返回给我们。
它支持XML和注解两种方式配置映射。
小结
ORM:对象-关系映射思想。表示一个JavaBean对象,要对应表里的一行数据。
关系->对象的映射:从表里查询数据,由框架帮我们自动封装成JavaBean对象
对象->关系的映射:把JavaBean里的数据存储到表里时,由框架帮我们自动把JavaBean的属性值,设置到表里对应的字段上
Hibernate是一个全ORM框架,实现了双向的自动映射。如果使用Hibernate,简单功能不需要写SQL。复杂功能需要再学习一套HQL语言
Mybatis是一个半ORM框架,只实现了"关系->对象"的自动映射。如果使用Mybatis框架,需要自己编写SQL


