MyBatis 操作数据库
本节目标
- 使用MyBatis完成简单的增删改查操作,参数传递。
- 掌握MyBatis的两种写法:注解和XML方式。
- 掌握MyBatis相关的日志配置。
前言
在应用分层学习时,我们了解到web应用程序一般分为三层,即:Controller
、Service
、Dao
。
之前的案例中,请求流程如下:
浏览器
发起请求,先请求Controller
;Controller
接收到请求
之后,调用Service
进行业务逻辑处理
Service
再调用Dao
;- 但是
Dao
层的数据是Mock
的,真实的数据应该从数据库中读取
。
我们学习MySQL数据库时,已经学习了 JDBC 来操作数据库,但是 JDBC 操作太复杂了。
什么是 MyBatis
- MyBatis是一款优秀的
持久层框架
,用于简化 JDBC 的开发
。
MyBatis 本是 Apache 的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
- 官网:MyBatis中文网
Spring生态与MyBatis详细关系图:
在上面我们提到一个词:持久层。
持久层:指的就是持久化操作
的层,通常指数据访问层(dao)
,是用来操作数据库的。
简单来说MyBatis是更简单完成程序和数据库交互的框架,也就是更简单的操作和读取数据库工具。
接下来,煮啵就通过一个入门程序,让大家感受一下通过Mybatis如何来操作数据库。
Mybatis操作数据库的步骤:
- 准备工作(创建springboot工程、数据库表准备、实体类);
- 引入Mybatis的相关
依赖
,配置Mybatis(数据库连接信息);- 编写SQL语句(
注解
/XML
);- 测试;
创建工程
创建springboot工程,并导入 mybatis 的起步依赖、mysql的驱动包。
Mybatis是一个持久层框架,具体的数据存储和数据操作还是在MySQL中操作的,所以需要添加MySQL驱动。
Mybatis 对应依赖
项目工程创建完成后,自动在pom.xml
文件中,导入Mybatis 依赖
和MySQL 驱动依赖
。
- 版本会随着SpringBoot版本发生变化。
- SpringBoot 3.X 对应MyBatis版本为3.X。
- 对应关系参考:https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
数据库连接对应的配置文件
properties
如果是application.properties
文件,配置内容如下:
# 驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接的url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
# 连接数据库的用户名
spring.datasource.username=root
# 连接数据库的密码
spring.datasource.password=root
yml
Mybatis 中要连接数据库,需要数据库相关参数配置。
- MySQL驱动类。
- 登录名。
- 密码。
- 数据库连接字符串。
如果是application.yml文件,配置内容如下:
# 数据库连接配置
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
注意事项:
如果使用MySQL是
5.x之前
的使用的是"com.mysql.jdbc.Driver"
;如果是
大于5.x
使用的是“com.mysql.cj.jdbc.Driver”
。
数据库和表的选择
在代码中,是如何选定一个数据库,以及选定这个数据库的表的呢?
数据库和表的选择是通过以下方式实现的:
1. 数据库的选择
数据库的选择是在 application.yml
配置文件中指定的:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
关键部分是 jdbc:mysql://127.0.0.1:3306/mybatis_test
,这里指定了:
- 数据库类型:MySQL
- 地址:本地(127.0.0.1)
- 端口:3306
- 数据库名称:mybatis_test
2. 表的选择
表的选择是在Mapper接口的SQL语句中指定的。例如:
@Select("select* from user_info")
List<UserInfo> selectAll();
这里 from user_info
指定了操作的表是 user_info
表。
工作流程总结
- Spring Boot应用启动时,会根据
application.yml
中的配置创建数据库连接池,连接到指定的mybatis_test
数据库。 - 当调用Mapper方法时,MyBatis会执行对应的SQL语句,这些SQL语句中明确指定了要操作的表(如
user_info
)。 - 所有的数据库操作都是在
mybatis_test
数据库中的user_info
表上进行的。
注意事项
- 确保
mybatis_test
数据库存在且可访问 - 确保
user_info
表存在于该数据库中 - 确保配置的用户名(root)和密码(123456)有足够的权限访问该数据库和表