当前位置: 首页 > news >正文

Mybaits 快速入门

1. Mybatis 概述

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

(持久层也就是 Web 开发三层架构的数据访问层,与数据库打交道)

Mybatis 框架在 dao 持久层操作数据库

(而 JDBC 是 sun 公司提出的 JavaEE 十三项规范之一

是用来操作数据库的一个规范

若直接用 JDBC 来操作数据库会非常的繁琐)

所以现在主流的都是使用 Mybatis 框架 简化 JDBC 的开发

Mybatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果的工作

2. Mybatis 快速入门

通过 Mybatis 快速入门 掌握  Mybatis 开发的基本流程

使用 Mybatis 操作数据库的方式与图形化界面工具操作数据库的底层逻辑是一样的

在 Java 程序中编写 SQL 语句

然后将 SQL 语句发送给数据库执行

数据库再将执行的结果返回给 Java 程序

2.1 使用步骤

共三个步骤:

        准备工作       

        引入 Mybatis 相关依赖,配置Mybatis       

        编写 SQL 语句

准备工作:创建 Springboot 工程,准备数据库表以及对应的实体类 User

引入 Mybatis 相关依赖:引入 Mybatis框架的依赖,以及操作 Mysql 的驱动(数据库连接信息)

编写 SQL 语句:注解或 XML 的方式

2.1.1 创建 Springboot 工程并引入 Mybatis 依赖

补充: 疑难杂症

在创建过程中可能会出现如下问题:

解决办法:

将其修改为:https://start.aliyun.com/

2.1.2 数据库表以及实体类的创建

准备实体类 User,用来封装用户信息

准备一个数据库表

实体类 User 的属性与数据库表中的字段一 一对应

补充:Java图像化工具操作数据库

(1)准备数据库表之前先连接数据库:


(2)基本使用

创建数据库:

删除数据库:

切换数据库:

控制台:

控制台若关掉,如何打开:

重命名控制台:以便于区分

2.1.3 配置 Mybatis 数据库连接信息

2.1.4 编写测试类

2.2 配置 SQL提示

在刚才的快速入门中,某些地方可以改进

比如 UserMapper 类中的 SQL 语言部分

解决:右击 SQL 语言 > 显示上下文操作 > 注入预言或引用 > 选中 Mysql 

配置成功后,编写的 SQL 语言在编码阶段就可以发现

不会在程序运行时才发现

降低了程序出错的概率 提高了开发效率

补充:数据库名会报错

这是因为 IDEA 没有与数据库建立连接,所以不识别数据库中表的名字

解决:在 IDEA 中配置 MySQL 数据库连接

2.3 JDBC

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

由于不同的数据库底层实现不同,操作方式也会不同

Sun 公司仅提供操作所有关系型数据库的接口        

各个数据库厂商提供其具体的实现类

使用该接口(JDBC)编程        真正执行的代码是驱动 jar 包中的实现类

2.3.1 工作原理

1、加载驱动程序  Class.forName(driver):使用时只需要调用接口,实际调用的是底层数据库厂商的实现部分

2、获取数据库连接,getconnection()调用driver的connect()方法 返回一个实现了Connection 接口的对象

3、创建语句对象,利用connection创建的statement执行sql语句。

 4、提交执行语句对象获取返回的结果集

5、遍历访问结果集

6、关闭

2.3.2  缺点

① 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能

② sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变java代码。

③ 查询操作时,需要手动将结果集中的数据手动封装到实体中。插入操作时,需要手动将实体的数据设置到sql语句的占位 符位置 

硬编码:

而使用 Mybatis 只需要关注 .properties 文件和 mapper 接口中的 SQL 语句

2.4 数据库连接池

是一个容器,负责分配,管理数据库连接

优点:资源复用,提高系统响应速度

2.4.1 Connection 对象

Connection 是 JDBC 中的一个接口,它代表着与数据库的物理连接

它允许您与数据库建立通信,发送SQL语句,并获取查询结果

// 创建数据库连接Connection connection = DriverManager.getConnection(url, username, password);

在使用完数据库连接后,务必关闭连接,以释放数据库资源并确保连接不会泄漏。

关闭连接的方法是调用 Connection 对象的 close 方法

  // 关闭连接connection.close();
 2.4.2 连接池引入

不使用数据库连接池:

客户端执行 SQL 语句需要先创建新的连接对象,再执行 SQL 语句

最后关闭连接对象释放资源 每一次都需要创建和关闭连接对象 

这造成了资源的浪费

使用数据库连接池:

程序启动时在连接池初始一定数量的连接对象

客户端执行 SQL 语句时 会在连接池获取连接对象来执行 SQL 语句

SQL 语句执行完毕后会将连接对象归还到连接池中

这实现了连接的复用

2.4.3 使用连接池

连接池技术不需要我们实现

市面上有很多优秀的连接池技术:

比如

(1)SpringBoot 默认自带的连接池:

(2)德鲁伊

该连接池是阿里巴巴开源的数据库连接池项目

功能强大,性能优秀

2.4.4 切换 Springboot 连接池

SpringBoot 默认自带 的连接池是 Hikari

1. pom.xml 引入德鲁伊依赖

2. application.properties 配置数据库连接四要素

其实只需要完成第一步即可  第二步前面已经完成

 <!--  德鲁伊连接池依赖  --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.9</version></dependency>
 2.5 Lombok
2.5.1 概述

Lombok 是一个实用的 Java 类库

能通过注解的形式自动生成构造器等方法

并可以自动化生成日志变量

简化 Java 开发,提高效率

2.5.2 使用

使用 Lombok 类库:引入依赖

 <!--Lombok 依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>

2.5.3 原理

程序编译时根据提供的注解为程序生成对应的方法

@Data:为实体类的所有属性生成对应的 set / get / hashcode / toString 方法

@NoArgsConstructor:为实体类生成无参构造

@AllArgsConstructor:为实体类生成全参构造

相关文章:

  • ThingsBoard3.9.1 MQTT Topic(2)
  • 数字孪生城市技术应用典型实践案例汇编(22个典型案例)(附下载)
  • nginx中的代理缓存
  • 短视频+直播带货平台搭建:电商系统源码开发的实用技术详解
  • 极狐GitLab GEO 功能介绍
  • 并查集(力扣2316)
  • 基础知识 - 结构体
  • 二分查找-LeetCode
  • Python内置函数---anext()
  • osu ai 论文笔记 DQN
  • LeetCode 第59题:螺旋矩阵Ⅱ
  • 【17】数据结构之图的遍历篇章
  • B端小程序如何突破常规,成为企业获客新利器?
  • 代码随想录算法训练营第二十天
  • 软件安装包-yum
  • .NET工作流框架ELSA Core:让你的应用程序更高效、更灵活
  • VS2022+QT环境配置及基本操作
  • 深入理解设计模式之模板方法模式 1d87ab8b42e98069b6c2c5a3d2710f9a
  • 学习海康VisionMaster之矩形检测
  • Flink 内部通信底层原理
  • 普京批准俄方与乌克兰谈判代表团人员名单
  • 著名植物学家、园艺学家,国际植物园协会原主席贺善安逝世
  • 上海虹桥国际咖啡文化节周五开幕,来看Coffeewalk通关攻略
  • 第78届戛纳电影节开幕,罗伯特·德尼罗领取终身成就奖
  • 沈阳卫健委通报“健康证”办理乱象:涉事医院已被立案查处
  • 沈阳一超市疑借领养名义烹食流浪狗,当地市监局:已收到多起投诉