01、Mybatis概述

1、 什么是MyBatis?(百度百科);

  • MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。【降低了冗余度】
  • MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。【映射机制】

2、 MyBatis是SSM框架中的一种框架:;

  • SSM框架包含:Spring + SpringMVC + MyBatis【框架就是对通用代码的封装,一般包含大量的类和接口】
  • MVC的三层架构如下:
     
    (1)表现层(UI):接收前端的请求,并把结果返回给前端
    (2)业务逻辑层(BLL):处理表现层转发的前端请求,将从持久层的数据返回到表现层
    (3)数据访问层(DAL):根据从业务层转发的请求去操作数据库,并将操作结果返回到业务层

3、 有了JDBC为什么还要使用MyBatis?;

  • 对于MyBatis的底层就是有JDBC来完成的,可以说MyBatis属于JDBC的优化

  • JDBC具有一些缺点:

  • SQL语句内嵌在Java程序中,不灵活,违反了OCP原则

  • 传递参数和结果集获取中包含很多重复代码,冗余度太高了

  • 案例如下:

// sql语句写死在java程序中
String sql = "select id,idCard,username,password,birth,gender,email,city,street,zipcode,phone,grade from t_user";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
List<User> userList = new ArrayList<>();
// 思考以下循环中的所有代码是否可以使用反射进行自动化封装。
while(rs.next()){

    // 获取数据
    String id = rs.getString("id");
    String idCard = rs.getString("idCard");
    String username = rs.getString("username");
    String password = rs.getString("password");
    String birth = rs.getString("birth");
    String gender = rs.getString("gender");
    String email = rs.getString("email");
    String city = rs.getString("city");
    String street = rs.getString("street");
    String zipcode = rs.getString("zipcode");
    String phone = rs.getString("phone");
    String grade = rs.getString("grade");
    // 创建对象
    User user = new User();
    // 给对象属性赋值
    user.setId(id);
    user.setIdCard(idCard);
    user.setUsername(username);
    user.setPassword(password);
    user.setBirth(birth);
    user.setGender(gender);
    user.setEmail(email);
    user.setCity(city);
    user.setStreet(street);
    user.setZipcode(zipcode);
    user.setPhone(phone);
    user.setGrade(grade);
    // 添加到集合
    userList.add(user);
}

4、 什么是对象关系映射呢?(ORM);

  • O(Object):JVMjava 对象
  • R(Relation):关系型数据库
  • M(Mapping):映射

&nbsp;
如图中所示,有一个User类,我们可以创建多个类的实例;t_user 代表三条数据,包含的字段与User类相同。
从表中的一条记录到Java对象 或 Java对象到表中一条记录的对应关系,就是映射。

&nbsp;
5、 MyBatis框架有哪些特点呢?;

○属于半自动化ORM框架
○支持定制化 SQL、存储过程、基本映射以及高级映射
○避免了几乎所有的 JDBC 代码中手动设置参数以及获取结果集
○支持XML开发,也支持注解式开发。【大部分是采用XML方式开发】
○将接口和 Java 的 POJOs(Plain Ordinary Java Object,简单普通的Java对象)映射成数据库中的记录
○体积小好学:一个jar包,两个XML配置文件。
○完全做到sql解耦合。
○提供了基本映射标签、 提供了高级映射标签、提供了XML标签,支持动态SQL的编写。