什么是MyBatis

MyBatis是一款优秀的持久层框架,它支持自定义SQL、储存过程以及高级映射,MyBatis免除了乎所有的JDBC代码以及设置参数和获取结果集的工作, MyBatis 可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO (Plalin Old Java Objects,普通老式Java 对象)为数据库中的记录。

总接来说:MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_spring

入门-快速入门程序

需求:使用MyBatis查询所有用户数据【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_JDBC_02

步骤;

1.准备工作(创建springboot工程、数据库表user、实体类User)

2.引入MyBatis的相关依赖,配置MyBatis

3.编写SQL语句(注解、XML)【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_SQL_03【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_数据库连接池_04

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_JDBC_05


package com.orange.mybatis01.pojo;

public class User {
    private Integer id;
    private String name;
    private Integer age;
    private Integer gender;
    private  String phone;

    public User() {
    }

    public User(Integer id, String name, Integer age, Integer gender, String phone) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.phone = phone;
    }

    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 Integer getAge() {
        return age;
    }

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

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                ", phone='" + phone + '\'' +
                '}';
    }
}

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_SQL_06

spring.application.name=mybatis-01

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/mybatis

spring.datasource.username=root

spring.datasource.password=1234

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_spring_07【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_spring_08

配置SQL提示

默认在mybatis中编写SQL语句是不识别的。可以做如下配置:【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_spring_09

JDBC介绍

JDBC: (Java DataBase Connectivity ),就是使用ava语言操作关系型数据库的一套API。

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_JDBC_10

本质:

sun公司官方定义的一套操作所有关系型数据库的规范,即接口.

各个数据库厂商去实现这套接口,提供数据库驱动jar包

我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

我们来看看原始JDBC的代码以及它的缺点

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_JDBC_11

Mybatis【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_SQL_12

在mybatis中进行数据库操作时我们主要注意两点:

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_JDBC_13

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_spring_14

数据库连接池

数据库连接池

数据库连接池是个容器,负责分配、管理数据库连接(Connection)

它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个

释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏

优势:

资源重用

提升系统响应速度

避免数据库连接遗漏



如果没有数据库连接池,客户端想要执行一条SQL语句,是什么样子

首先会创建一个新的连接对象,然后执行SQL语句【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_JDBC_15

执行完这句SQL语句以后,需要把这个连接对象关闭了,来释放资源,每一次都需要这样来执行,是很浪费资源的【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_SQL_16

有了数据库连接池,程序在启动的时候就会在容器当中初始化一定数量的连接对象

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_JDBC_17

执行时【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_数据库连接池_18

执行后【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_SQL_19

做到了连接的复用


标准接口

标准接口:DataSource

官方提供的数据库连接池接口,由第三方组织实现此接口

功能:获取连接【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_spring_20【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_JDBC_21

通过日志我们可以知道springboot默认用的就是Hikari追光者

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_数据库连接池_22

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_JDBC_23

如何切换数据库连接池

在依赖配置当中添加一个依赖即可

<dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid-spring-boot-starter</artifactId>
       <version>1.2.8</version>
    </dependency>
</dependencies>

第二种

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_spring_24

lombok工具

问题分析

我们发现对于实体类来说,代码比较臃肿与繁琐,虽然是快捷方式生成,但是也是体力活【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_spring_25

而lombok解决这个问题,加入一个注解Data我们就不用再写get set 等等方法了【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_数据库连接池_26

介绍

Lombok是一个实用的Java类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toStri

ng等方法,并可以自动化生成日志变量,简化java开发、提高效率。

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_JDBC_27

在使用lombok之前得先引入依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_SQL_28

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_JDBC_29

我们打开字节码看看,注解已经没有了,取而代之是方法

【MyBatis】-入门(程序、JDBC、数据库池、Lombok)_spring_30

注意:Lombok会在编译时,自动生成对应的java代码。我们使用lombok时,还需要安装一个lombok的插件(idea自带)。