MyBatis学习——第一章:简介

简介

什么是 MyBatis?
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。(来自官网)
那么mybatis到底是什么呢?说白了就是一个ORM(object relationship map)框架,可以让数据库中的表和Java中的实体类相互转换。
假设有一个user表,其表结构如下:

User表:
create table user
(id       int auto_increment primary key,username varchar(32)  not null comment '用户名称',birthday datetime     null comment '生日',sex      char         null comment '性别',address  varchar(256) null comment '地址'
)charset = utf8;

mybatis要做的事情就是将上述的表结构转换为如下实体类User:

import java.io.Serializable;
import java.util.Date;public class User implements Serializable {private Integer id;private String username;private String sex;private String address;private Date birthday;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", sex='" + sex + '\'' +", address='" + address + '\'' +", birthday=" + birthday +'}';}
}

上述转换中,数据表中的每行属性名,对应的是实体类中的属性。例如user表中id列名,对应的就是user实体类中的id属性;username对应的是实体类中username属性。同时呢,在实体类中,每个属性必须有自己的set()和get()方法,tostring()方法不做要求。
经过如上转换后,我们只需要操作在实际开发中操作实体类即可,就不需要写过多的JDBC代码,同时也完全发挥了Java的面向对象特性(关系数据库是面向关系的)。
mybatis的底层实现
那么mybatis的底层实现是怎样的呢?其实说白了就是将Java公司提供的JDBC进行再一次封装,从而实现ORM框架。底层实现不必知道,只要知道怎么用就行了。