springboot项目操作数据库之MyBatis操作mysql
MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。
通过Mybatis就可以大大简化原生的JDBC程序的代码编写,比如 通过 selec t * from user 查询所有的用户数据,通过JDBC程序操作呢,需要大量的代码实现,而如果通过Mybatis实现相同的功能,只需要简单的三四行就可以搞定。
1). 创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包、lombok。
项目工程创建完成后,自动在pom.xml文件中,导入Mybatis依赖和MySQL驱动依赖。如下所示:
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>3.5.7</version>
- <relativePath/> <!-- lookup parent from repository -->
- </parent>
- <groupId>com.zidiu</groupId>
- <artifactId>demo04</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>demo04</name>
- <description>demo04</description>
- <url/>
- <licenses>
- <license/>
- </licenses>
- <developers>
- <developer/>
- </developers>
- <scm>
- <connection/>
- <developerConnection/>
- <tag/>
- <url/>
- </scm>
- <properties>
- <java.version>21</java.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter</artifactId>
- <version>3.0.5</version>
- </dependency>
-
- <dependency>
- <groupId>com.mysql</groupId>
- <artifactId>mysql-connector-j</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter-test</artifactId>
- <version>3.0.5</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths>
- <path>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <excludes>
- <exclude>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </exclude>
- </excludes>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- </project>
复制代码 2). 数据准备:创建用户表user,并创建对应的实体类User。
- create table user(
- id int unsigned primary key auto_increment comment 'ID,主键',
- username varchar(20) comment '用户名',
- password varchar(32) comment '密码',
- name varchar(10) comment '姓名',
- age tinyint unsigned comment '年龄'
- ) comment '用户表';
-
- insert into user(id, username, password, name, age) values (1, 'daqiao', '123456', '大乔', 22),
- (2, 'xiaoqiao', '123456', '小乔', 18),
- (3, 'diaochan', '123456', '貂蝉', 24),
- (4, 'lvbu', '123456', '吕布', 28),
- (5, 'zhaoyun', '12345678', '赵云', 27);
复制代码 3). 配置Mybatis
- #数据库访问的url地址
- spring.datasource.url=jdbc:mysql://localhost:3306/web
- #数据库驱动类类名
- spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
- #访问数据库-用户名
- spring.datasource.username=root
- #访问数据库-密码
- spring.datasource.password=root
复制代码
配置文件注释标黄或者乱码解决方法:
把编码改成UTF-8 即可。
4). 编写Mybatis程序:编写Mybatis的持久层接口,定义SQL语句(注解)
- package com.zidiu.mapper;
-
- import com.zidiu.pojo.User;
- import org.apache.ibatis.annotations.Mapper;
- import org.apache.ibatis.annotations.Select;
- import java.util.List;
-
- @Mapper
- public interface UserMapper {
- /**
- * 查询全部
- */
- @Select("select * from user")
- public List<User> findAll();
- }
复制代码 Idea语言注入设置
注解说明:
- @Mapper注解:表示是mybatis中的Mapper接口
程序运行时,框架会自动生成接口的实现类对象(代理对象),并给交Spring的IOC容器管理
- @Select注解:代表的就是select查询,用于书写select查询语句
5). 单元测试
在创建出来的SpringBoot工程中,在src下的test目录下,已经自动帮我们创建好了测试类 ,并且在测试类上已经添加了注解 @SpringBootTest,代表该测试类已经与SpringBoot整合。
该测试类在运行时,会自动通过引导类加载Spring的环境(IOC容器)。我们要测试那个bean对象,就可以直接通过@Autowired注解直接将其注入进行,然后就可以测试了。
- package com.zidiu;
-
- import com.zidiu.mapper.UserMapper;
- import com.zidiu.pojo.User;
- import org.junit.jupiter.api.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
-
- import java.util.List;
-
- @SpringBootTest
- public class SpringbootMybatisQuickstartApplicationTests {
- @Autowired
- private UserMapper userMapper;
- @Test
- public void testFindAll(){
- List<User> userList = userMapper.findAll();
- for (User user : userList) {
- System.out.println(user);
- }
- }
- }
复制代码
- #mybatis的配置
- mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
复制代码 完整版:
- #数据库访问的url地址
- spring.datasource.url=jdbc:mysql://localhost:3306/web
- #数据库驱动类类名
- spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
- #访问数据库-用户名
- spring.datasource.username=root
- #访问数据库-密码
- spring.datasource.password=root
- #mybatis的配置
- mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
复制代码 打开上述开关之后,再次运行单元测试,就可以看到控制台输出的SQL语句是什么样子的。
======================================================
常见的数据库连接池:C3P0 、DBCP 、Druid 、Hikari (springboot默认)
现在使用更多的是:Hikari、Druid (性能更优越)
1). Hikari(追光者) [默认的连接池]
2). Druid(德鲁伊)
①. 在pom.xml文件中引入依赖
- <dependency>
- <!-- Druid连接池依赖 -->
- <groupId>com.alibaba</groupId>
- <artifactId>druid-spring-boot-starter</artifactId>
- <version>1.2.19</version>
- </dependency>
复制代码 ②. 在application.properties中引入数据库连接配置
- spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
- spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
- spring.datasource.druid.url=jdbc:mysql://localhost:3306/web
- spring.datasource.druid.username=root
- spring.datasource.druid.password=1234
复制代码 SpringBoot3+Vue3开发综合实战项目:
JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战
|