1. MyBatis框架介绍

1. 框架概述

程序开发中框架(framework)往往是对常见功能的封装,可以把框架理解为软件的设计规范或者标准化的组件,好比机械中的螺丝螺母等标准的机械部件

假如你要造一辆兰博基尼,在没有框架的情况下,你需要自己去烧锅炉炼钢,然后组成轮子、门、座椅等部件,然后组装起来。但如果你用了框架,就相当于你有现成的轮子、门、座椅等部件,你只需要组装一下就可以了。

一个框架是一组可复用的设计构件

1. MyBatis框架介绍_经验分享


框架(Framework)是整个或者部分系统的可重用设计,是JavaEE底层技术的封装

框架是可以被开发者定制的应用骨架

框架是一个半成品,软件是成品。我们在它的基础上开发出成品

框架解决的问题


  1. 解决了技术通用的问题

    在JavaEE体系中,有着各种各样的技术。不同的软件企业,根据自身的业务需求选择不同的技术,容易造成应用依赖技术,增加了项目开发实现的复杂性和技术风险性。企业项目中应该将应用的设计与实现技术解耦

  2. 提升了开发效率

    企业项目中使用框架,只需要专注实现业务需求。使用框架的方便性,提升了开发效率

  3. 提升了系统稳定性

    一个成熟的框架,经过了在众多企业项目中的验证使用,稳定性有保障

2. 项目的三层架构

没有使用三层架构的场景


1. MyBatis框架介绍_经验分享_021566568755667

生活中的分成架构


小公司:所有的办公区域在一起

1. MyBatis框架介绍_经验分享_031562376118725

大公司:分层明确

1. MyBatis框架介绍_经验分享_041562376144920

三层架构的作用


一个中大型软件开发需要有明确分层

作用
表示层 View 面向客户,处理客户的输入和输出。前端代码
业务层 Service 处理业务逻辑的代码,如:登陆、注册、支付
数据访问层 DAO Data Access Object 面向数据库,提供增删改查的功能,也叫持久层
1. MyBatis框架介绍_经验分享_051566607560103

分层的方式


分层包 功能描述
com.view 表示层
com.service 业务层
com.dao 数据访问层

三层架构的优缺点


  1. 优点

    1. 降低了代码的耦合度,降低类与类之间关系。有利于团队的开发
  2. 项目的可扩展性更好 3. 可维护性更好 4. 可重用性更好,同一个方法可以由多个类去调用

  3. 缺点

    1. 执行效率更低
    2. 开发工作量更大
    3. 会导致级联的修改,如果修改一个功能,导致三层都要进行修改

3. MyBatis框架介绍

MyBatis历史


MyBatis官网:http://www.mybatis.org/mybatis-3/,

1. MyBatis框架介绍_经验分享_06image-20210308073121564

框架包下载地址:https://github.com/mybatis/mybatis-3/releases

MyBatis是Apache软件基金会下的一个开源项目,前身是iBatis框架。

2010年这个项目由apache 软件基金会迁移到google code下,改名为MyBatis

2013年11月又迁移到了GitHub(世界上最大的开源网站)

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射

优点:

  1. 简单易学:Mybatis本身就很小且简单,没有任何第三方依赖,最简单安装只要两个jar文件+配置几个SQL映射文件即可  (一般额外加一个jar包: log4j , 主要打印日志的)
  2. 使用灵活:Mybatis不会对应用程序或者数据库的现有设计强加任何影响。SQL语句写在XML里,便于统一管理和优化。(和Hibernate相比)
  3. 解除SQL与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易进行单元测试。SQL语句和代码的分离,提高了可维护性

缺点:

  1. 编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此
  2. SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库
  3. 框架还是比较简陋,功能尚有缺失,二级缓存机制不佳

MyBatis的ORM方式


Object Relational Mapping 对象关系映射

mybatis会将结果集中的每一条记录 映射 成 java的一个实体类对象 (反射)

1. MyBatis框架介绍_经验分享_071566614801843

MyBatis的两种映射方式:

  1. 通过XML映射
  2. 通过注解