01.MyBatis框架介绍

1.三层架构

软件开发常用的架构是三层架构,之所以流行是因为有着清晰的任务划分。一般包括以下三层:

  • 持久层:主要完成与数据库相关的操作,即对数据库的增删改查。因为数据库访问的对象一般称为Data Access Object(简称DAO),所以有人把持久层叫做DAO层。
  • 业务层:主要根据功能需求完成业务逻辑的定义和实现。因为它主要是为上层提供服务的,所以有人把业务层叫做Service层或Business层。
  • 表现层:主要完成与最终软件使用用户的交互,需要有交互界面(UI)。因此,有人把表现层称之为web层或View层。 三层架构之间调用关系为:表现层调用业务层,业务层调用持久层。 各层之间必然要进行数据交互,我们一般使用java实体对象来传递数据。

image-20220217140843253

2. 原始jdbc操作(查询数据)

image-20220217141110621

2.1 JDBC问题分析

  1. 数据库连接频繁被创建和释放,会造成系统资源的浪费,从而影响系统性能。
  2. sql 语句在代码中硬编码,造成代码不易维护。而实际开发中, sql 变化的可能较大,sql 变动需要改变java代码,所以不宜维护系统。
  3. 查询操作时,需要手动将结果集中的数据手动封装到实体中。

<b>应对上述问题给出的解决方案:</b>

  1. 使用数据库连接池初始化连接资源
  2. 将sql语句抽取到xml配置文件中
  3. 使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射

3. MyBatis简介

MyBatis是一个优秀的基于ORM的半自动轻量级持久层框架,它对jdbc的操作数据库的过程进行封装, 使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建 statement、手动设置参数、结果集检索等jdbc繁杂的过程代码

轻量级解释:程序在启动期间需要消耗的资源少。

  • 半自动:MyBatis

  • 全自动:hibernate

    **两者本质区别:**是否需要手动写sql。

比较起来hibernate是不需要编写sql的,由底层来自动生成sql。那为什么MyBatis会比它火呢?

  • 原因在于,如果不能编写sql,我们则不能对其生成的sql进行优化,所以更建议使用MyBatis框架。

4. ORM思想

ORM(Object Relational Mapping)对象关系映射

  • O(对象模型): 实体对象,即我们在程序中根据数据库表结构建立的一个个实体javaBean
  • R(关系型数据库的数据结构): 关系数据库领域的Relational(建立的数据库表)
  • M(映射): 从R(数据库)到O(对象模型)的映射,可通过XML文件映射

实现:

  1. 让实体类和数据库表进行一一对应关系 先让实体类和数据库表对应 再让实体类属性和表里面字段对应
  2. 不需要直接操作数据库表,直接操作表对应的实体类对象

image-20220217145323816

  • ORM作为是一种思想帮助我们跟踪实体的变化,并将实体的变化翻译成sql脚本,执行到数据库中去,也就是将实体的变化映射到了表的变化。
  • mybatis采用ORM思想解决了实体和数据库映射的问题,对jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作