MyBatis

MyBatis

一、框架概述

1、三层架构
  • 三层架构包含的三层:

    • 界面层(User Interface layer)
    • 业务逻辑层(Business Logic Layer)
    • 数据访问层(Data access layer)
  • 三层的职责

    • 界面层(表示层,视图层):主要功能是接受用户的数据,显示请求的处理结果。使用 web 页面和用户交互,手机 app 也就是表示层的,用户在 app 中操作,业务逻辑在服务器端处理。【和用户打交道的, 接收用户的请求参数, 显示处理结果的。(jsp ,html ,servlet)】
    • 业务逻辑层:接收表示传递过来的数据,检查数据,计算业务逻辑,调用数据访问层获取数据。
    • 数据访问层:与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。
  • 三层的处理请求的交互:用户—> 界面层—>业务逻辑层—>数据访问层—>DB 数据库

  • 三层对应的包:

    • 界面层: controller包 (servlet)
    • 业务逻辑层: service 包(XXXService类)
    • 数据访问层: dao包(XXXDao类)
  • 三层对应的处理框架:

    • 界面层——servlet——springmvc(框架)
    • 业务逻辑层——service类——spring(框架)
    • 数据访问层——dao类——mybatis(框架)
2、框架
  • 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种认为,框架是可被应用开发者定制的应用骨架、模板。

  • 框架是一个模块

    • 框架中定义好了一些功能。这些功能是可用的。
    • 可以加入项目中自己的功能, 这些功能可以利用框架中写好的功能。
  • 框架是一个半成品的软件,定义好了一些基础功能, 需要加入你的功能就是完整的。基础功能是可重复使用的,可升级的。

  • 框架特点:

    • 框架一般不是全能的, 不能做所有事情
    • 框架是针对某一个领域有效。 特长在某一个方面,比如mybatis做数据库操作强,但是他不能做其它的。
    • 框架是一个软件
3、mybatis框架
  • MyBatis 本是 apache 的一个开源项目 iBatis, 2010 年这个项目由 apache software foundation迁移到了 google code,并且改名为 MyBatis 。2013 年 11 月迁移到 Github。iBATIS 一词来源于“internet”和“abatis”的组合,是一个基于 Java 的持久层框架。iBATIS 提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAOs)
  • mybatis是 MyBatis SQL Mapper Framework for Java (sql映射框架)
    • sql mapper:sql映射
      可以把数据库表中的一行数据 映射为 一个java对象。操作这个对象,就相当于操作表中的数据
  • Data Access Objects(DAOs) : 数据访问 ,对数据库执行增删改查。
①mybatis提供的功能:
  • 提供了创建Connection ,Statement, ResultSet的能力 ,不用开发人员创建这些对象了

  • 提供了执行sql语句的能力

  • 提供了循环sql, 把sql的结果转为java对象, List集合的能力

  • 提供了关闭资源的能力,不用你关闭Connection, Statement, ResultSet

开发人员提供sql语句–mybatis处理sql—开发人员得到List集合或java对象(表中的数据)


二、MyBatis的使用

1、使用步骤:
  • 新建表student
  • 加入maven的mybatis坐标,mysql驱动的坐标
<?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>com.cooler</groupId>
  <artifactId>hello-mybatis</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>hello-mybatis</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.9</version>
    </dependency>

  </dependencies>

  <build>

    <resources>
      <resource>
        <directory>src/main/java</directory><!--所在的目录-->
        <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>

  </build>
</project>
  • 创建实体类,Student——保存表中的一行数据
package com.cooler.domain;

/**
 * @author CoolEr
 * @create 2022/2/27
 */
//推荐和表名一样,方便记忆
public class Student {
   

    //定义属性名,目前要求是属性名和列名一样
    private Integer id;
    private String name;
    private String email;
    private Integer age;

    public Integer getId() {
   
        return id;
    }

    public void setId(Integer id) {
   
        this.id = id;
    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public String getEmail() {
   
        return email;
    }

    public void setEmail(String email) {
   
        this.email = email;
    }

    public Integer getAge() {
   
        return age;
    }

    public void setAge(Integer age) {
   
        this.age = age;
    }

    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值