1-框架概念
程序开发中的框架往往是对常见功能的封装,程序框架理解为基础或者机械标准件(例如螺丝螺母标准的机械部件)。
假如你要造一辆马车,在没有框架的情况下,你需要自己去伐木,去把木头做成木板,木棍,然后组成轮子,门,等部件,然后组装起来。但如果你用了框架,就相当于你有现成的轮子,门等部件,你只需要组装一下就可以了。一个框架是一组可复用的设计构件。
框架(Framework):是整个或者部分系统的可重用设计,是JavaEE底层技术的封装。框架是可以被开发者定制的应用骨架。框架是一个半成品,软件是成品。
2-三层结构
2.1分层方式
一个中大型软件开发需要有明确分层。
分层包 | 功能描述 | 作用 |
---|---|---|
cn.guardwhy.view | 表示层 View | 面向客户,用于处理客户的输入和输出,前端的代码。 |
cn.guardwhy.service | 业务层 Service | 处理业务逻辑代码,如:登录,转账,挂号 |
cn.guardwhy.dao | 数据访问层 DAO Data Access Object | 也叫持久层。面向数据库,实现对数据库增删改查操作 |
2.2 分层的优缺点
优点:
- 降低了代码的耦合度,降低类与类之间关系。有利于团队的开发。
- 项目的可扩展性更好,可维护性更好。
- 可重用性更好,同一个方法可以由多个类去调用。
缺点:
- 执行效率更低,开发工作量更大
- 会导致级联的修改,如果修改一个功能,导致三层都要进行修改。
3-mybatis简介
3.1 什么是Mybatis
- MyBatis 是一款优秀的持久层框架。
- MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。
- MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
- MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
3.2 持久化
持久化是将程序数据在持久状态和瞬时状态间转换的机制。
即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。JDBC就是一种持久化机制。文件IO也是一种持久化机制。
为什么需要持久化服务呢?
- 有一些对象,不能让它消失。
- 内存价格昂贵。
持久层
- 完成持久化工作的代码块 . ----> dao层 (DAO (Data Access Object) 数据访问对象)
- 大多数情况下,数据持久化往往也就意味着将内存中的数据保存到磁盘上加以固化,而持久化的实现过程则大多通过各种关系数据库来完成。
- 与系统其他部分相对而言,这个层面应该具有一个较为清晰和严格的逻辑边界。 说白了就是用来操作数据库的。
3.3 mybatis的优缺点
优点
- 简单易学:mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个SQL映射文件即可。
- 使用灵活:Mybatis不会对应用程序或者数据库的现有设计强加任何影响。SQL语句写在XML里,便于统一管理和优化。
- 解除SQL与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易进行单元测试。
缺点
- 编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。
- SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。
- 框架还是比较简陋,功能尚有缺失,二级缓存机制不佳。
3.4 ORM的概念
Object Relational Mapping 对象关系映射
- 在Java中编程:使用的是面向对象的开发方式。
- 在MySQL中写的SQL语句:使用的是关系型的数据库将表中的数据映射成一个对象,对象关系映射。
mybatis的两种映射方式
- 通过XML的配置文件。
- 通过注解的方式
3.5 下载安装
官网下载
Mybatis官方地址: http://www.mybatis.org/mybatis-3/
![](https://i-blog.csdnimg.cn/blog_migrate/eb9e7ed86ba1d87bb3fce11b68d939c9.png)
github下载
github地址: https://github.com/mybatis/mybatis-3/releases
4- Mybatis入门
4.1 项目准备
4.1.1项目目录
![](https://i-blog.csdnimg.cn/blog_migrate/c2088781bba2ceae4ae846643788c996.png)
导入相关依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.guardwhy</groupId>
<artifactId>Mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!--倒入项目所需依赖-->
<dependencies>
<!-- mybatis相关依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!-- mysql数据库相关依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java