MyBatis简介
MyBatis的前身是Apache的开源项目iBatis。iBatis一次来源于internet,和abatis的组合,是一个基于Java持久层架构。2010年这个项目由Apache software foundation迁移到Google code,并更名为MyBatis。2013年11月,MyBatis迁移到Github上,目前由Github提供维护。
MyBatis的优势在于灵活。他几乎可以替代JDBC,同时提供了接口编程。目前MyBatis的数据访问层DAO(Data Access Objects)是不需要实现类的,他只需要一个接口和XML(或者注解)。MyBatis提供自动映射,动态SQL、级联、缓存、注解、代码和SQL分离等特性,使用方便,同时也可以对SQL进行优化。因为其具有封装少、映射多样化、支持存储过程、可以进行SQL优化等特点,使得他取代了Hibernate成为了Java互联网中首选的持久架构。
Hibernate作为一种十分流行的框架,他有其无可替代的优势,这里我们有必要讨论一下它和MyBatis的区别。由于MyBatis和Hibernate都是持久层架构,都会涉及数据库,所以首先定义一个数据库表–角色表(t_role),其结构如图:
根据这个角色表,我们可以用一个POJO(Plain Ordinary Java Object)和这张表定义的字段对应起来,如下:
package com.learn.chapter1.pojo;
public class Role implements java.io.Serializable{
private Integer id;
private String roleName;
private String nate;
/*
setter and getter
*/
}
无论是MyBatis还是Hibernate都是依靠某种方法,将数据库的表和POJO映射起来的,这样程序员就可以操作POJO来完成相关的逻辑了。
1.2.1 Hibernate简介
要将POJO和数据库映射起来需要给这些框架提供映射规则,所以下一步就是要提供映射的规则,如图:
在MyBatis或者Hibernate中可以通过XML或者是注解提供映射规则,这讨论的是XML方式,因为在MyBatis中注解方式会收到一定的限制,所以MyBatis通常使用XML方式实现映射关系。
我们把POJO对象和数据库表相互映射的框架称为对象关系映射(Object Relational Ma