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:为实体类生成全参构造