MyBatis 是一款优秀的 持久层 框架,用于简化 JDBC 的开发。
官网:https://mybatis.org/mybatis-3/zh/index.html
一、快速入门
1.1 Mybatis 操作数据库的步骤
- 准备工作(创建 springboot 工程、数据库表 user、实体类 User)
- 引入 Mybatis 的相关依赖,配置 Mybatis (数据库连接信息)
- 编写 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 {@Autowiredprivate UserMapper userMapper;@Testpublic 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 本质:
- sun 公司官方定义的一套操作所有关系型数据库的规范,即接口。
- 各个数据库厂商去实现这套接口,提供数据库驱动 jar 包。
- 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动 jar 包中的实现类。
技术对比
分析了 JDBC 的缺点之后,我们再来看一下在 mybatis 中,是如何解决这些问题的:
- 数据库连接四要素(驱动、链接、用户名、密码),都配置在 springboot 默认的配置文件 application.properties 中
- 查询结果的解析及封装,由 mybatis 自动完成映射封装,我们无需关注
- 在 mybatis 中使用了数据库连接池技术,从而避免了频繁的创建连接、销毁连接而带来的资源浪费。
三、数据库连接池
1 介绍
数据库连接池
- 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
- 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
- 释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏
优势
- 资源重用
- 提升系统响应速度
- 避免数据库连接遗漏
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 自带)。