day08-Mybatis入门

MyBatis 是一款优秀的 持久层 框架,用于简化 JDBC 的开发。

官网:https://mybatis.org/mybatis-3/zh/index.html

一、快速入门

1.1 Mybatis 操作数据库的步骤

  1. 准备工作(创建 springboot 工程、数据库表 user、实体类 User)
  2. 引入 Mybatis 的相关依赖,配置 Mybatis (数据库连接信息)
  3. 编写 SQL 语句(注解/XML)

在这里插入图片描述

1.2 入门程序实现

1.2.1 准备工作

创建 springboot 工程,并导入 mybatis 的起步依赖、mysql 的驱动包。
在这里插入图片描述

1.2.2 配置 Mybatis

application.properties:

#配置数据库的连接信息 - 四要素
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=1234

1.2.3 编写 SQL 语句

在创建出来的 springboot 工程中,在引导类所在包下,在创建一个包 mapper。在 mapper 包下创建一个接口 UserMapper ,这是一个持久层接口(Mybatis 的持久层接口规范一般都叫 XxxMapper)。

@Mapper //在运行时,会自动生成该接口的实现类对象(代理对象), 并且将该对象交给IOC容器管理
public interface UserMapper {

    //查询全部用户信息
    @Select("select * from user")
    public List<User> list();

}
  • @Mapper注解:表示是 mybatis 中的 Mapper 接口
    程序运行时:框架会自动生成接口的实现类对象(代理对象),并给交 Spring 的 IOC 容器管理
  • @Select注解:代表的就是 select 查询,用于书写 select 查询语句

1.2.4 单元测试

@SpringBootTest //springboot整合单元测试注解
class SpringbootMybatisQuickstartApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testListUser(){
        List<User> userList = userMapper.list();
        userList.stream().forEach(user -> {
            System.out.println(user);
        });
    }

}

1.3 解决 SQL 警告与提示

在这里插入图片描述
在这里插入图片描述

二、JDBC 介绍(了解)

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

JDBC 本质:

  1. sun 公司官方定义的一套操作所有关系型数据库的规范,即接口。
  2. 各个数据库厂商去实现这套接口,提供数据库驱动 jar 包。
  3. 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动 jar 包中的实现类。

技术对比
分析了 JDBC 的缺点之后,我们再来看一下在 mybatis 中,是如何解决这些问题的:

  1. 数据库连接四要素(驱动、链接、用户名、密码),都配置在 springboot 默认的配置文件 application.properties 中
  2. 查询结果的解析及封装,由 mybatis 自动完成映射封装,我们无需关注
  3. 在 mybatis 中使用了数据库连接池技术,从而避免了频繁的创建连接、销毁连接而带来的资源浪费。

在这里插入图片描述

三、数据库连接池

1 介绍

数据库连接池

  1. 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
  2. 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
  3. 释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏

优势

  1. 资源重用
  2. 提升系统响应速度
  3. 避免数据库连接遗漏

2 产品

官方(sun)提供了数据库连接池标准(javax.sql.DataSource接口)

  • 功能:获取连接
public Connection getConnection() throws SQLException; 
  • 第三方组织必须按照DataSource接口实现

常见的数据库连接池:

  • C3P0
  • DBCP
  • Druid
  • Hikari (springboot默认)

Druid(德鲁伊)

  • Druid 连接池是阿里巴巴开源的数据库连接池项目
  • 功能强大,性能优秀,是 Java 语言最好的数据库连接池之一

如果我们想把默认的数据库连接池切换为 Druid 数据库连接池,只需要完成以下两步操作即可:
官方地址:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
(1)在pom.xml文件中引入依赖

<dependency>
	<!-- Druid连接池依赖 -->
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.2.8</version>
</dependency>

(2)在application.properties中引入数据库连接配置

spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.druid.username=root
spring.datasource.druid.password=1234

四、lombok

Lombok 是一个实用的 Java 类库,可以通过简单的注解来简化和消除一些必须有但显得很臃肿的 Java 代码。
在这里插入图片描述

通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方
法,并可以自动化生成日志变量,简化 java 开发、提高效率。
在这里插入图片描述

<!-- 在springboot的父工程中,已经集成了lombok并指定了版本号,故当前引入依赖时不需要指定version -->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>

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

相关推荐

  1. 跟着pink老师前端入门教程-day08

    2024-03-14 13:52:03       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 13:52:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 13:52:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 13:52:03       87 阅读
  4. Python语言-面向对象

    2024-03-14 13:52:03       96 阅读

热门阅读

  1. vue2和vue3的区别?

    2024-03-14 13:52:03       47 阅读
  2. 白话-MVCC如何工作

    2024-03-14 13:52:03       28 阅读
  3. python实现B/B+树

    2024-03-14 13:52:03       48 阅读
  4. python图像处理,opencv笔记汇总

    2024-03-14 13:52:03       42 阅读
  5. 算法详解——贪心算法

    2024-03-14 13:52:03       41 阅读
  6. ARM 汇编指令:(三)运算处理指令

    2024-03-14 13:52:03       44 阅读
  7. nginx

    nginx

    2024-03-14 13:52:03      36 阅读
  8. LVS集群

    LVS集群

    2024-03-14 13:52:03      36 阅读
  9. python之第三方模块

    2024-03-14 13:52:03       37 阅读
  10. js 保留小数点几位

    2024-03-14 13:52:03       43 阅读