找回密码
 立即注册
查看: 74|回复: 0

springboot项目操作数据库之MyBatis操作mysql

[复制链接]

73

主题

3

精华

77

金币

技术维护QQ:515138

积分
165
发表于 2025-11-18 09:14:27 | 显示全部楼层 |阅读模式
springboot项目操作数据库之MyBatis操作mysql
MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。
通过Mybatis就可以大大简化原生的JDBC程序的代码编写,比如 通过 selec t * from user 查询所有的用户数据,通过JDBC程序操作呢,需要大量的代码实现,而如果通过Mybatis实现相同的功能,只需要简单的三四行就可以搞定。
2.jpg
1). 创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包、lombok。
1.png
项目工程创建完成后,自动在pom.xml文件中,导入Mybatis依赖和MySQL驱动依赖。如下所示:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4.     <modelVersion>4.0.0</modelVersion>
  5.     <parent>
  6.         <groupId>org.springframework.boot</groupId>
  7.         <artifactId>spring-boot-starter-parent</artifactId>
  8.         <version>3.5.7</version>
  9.         <relativePath/> <!-- lookup parent from repository -->
  10.     </parent>
  11.     <groupId>com.zidiu</groupId>
  12.     <artifactId>demo04</artifactId>
  13.     <version>0.0.1-SNAPSHOT</version>
  14.     <name>demo04</name>
  15.     <description>demo04</description>
  16.     <url/>
  17.     <licenses>
  18.         <license/>
  19.     </licenses>
  20.     <developers>
  21.         <developer/>
  22.     </developers>
  23.     <scm>
  24.         <connection/>
  25.         <developerConnection/>
  26.         <tag/>
  27.         <url/>
  28.     </scm>
  29.     <properties>
  30.         <java.version>21</java.version>
  31.     </properties>
  32.     <dependencies>
  33.         <dependency>
  34.             <groupId>org.mybatis.spring.boot</groupId>
  35.             <artifactId>mybatis-spring-boot-starter</artifactId>
  36.             <version>3.0.5</version>
  37.         </dependency>
  38.         <dependency>
  39.             <groupId>com.mysql</groupId>
  40.             <artifactId>mysql-connector-j</artifactId>
  41.             <scope>runtime</scope>
  42.         </dependency>
  43.         <dependency>
  44.             <groupId>org.projectlombok</groupId>
  45.             <artifactId>lombok</artifactId>
  46.             <optional>true</optional>
  47.         </dependency>
  48.         <dependency>
  49.             <groupId>org.springframework.boot</groupId>
  50.             <artifactId>spring-boot-starter-test</artifactId>
  51.             <scope>test</scope>
  52.         </dependency>
  53.         <dependency>
  54.             <groupId>org.mybatis.spring.boot</groupId>
  55.             <artifactId>mybatis-spring-boot-starter-test</artifactId>
  56.             <version>3.0.5</version>
  57.             <scope>test</scope>
  58.         </dependency>
  59.     </dependencies>
  60.     <build>
  61.         <plugins>
  62.             <plugin>
  63.                 <groupId>org.apache.maven.plugins</groupId>
  64.                 <artifactId>maven-compiler-plugin</artifactId>
  65.                 <configuration>
  66.                     <annotationProcessorPaths>
  67.                         <path>
  68.                             <groupId>org.projectlombok</groupId>
  69.                             <artifactId>lombok</artifactId>
  70.                         </path>
  71.                     </annotationProcessorPaths>
  72.                 </configuration>
  73.             </plugin>
  74.             <plugin>
  75.                 <groupId>org.springframework.boot</groupId>
  76.                 <artifactId>spring-boot-maven-plugin</artifactId>
  77.                 <configuration>
  78.                     <excludes>
  79.                         <exclude>
  80.                             <groupId>org.projectlombok</groupId>
  81.                             <artifactId>lombok</artifactId>
  82.                         </exclude>
  83.                     </excludes>
  84.                 </configuration>
  85.             </plugin>
  86.         </plugins>
  87.     </build>
  88. </project>
复制代码
2). 数据准备:创建用户表user,并创建对应的实体类User。
  1. create table user(
  2.     id int unsigned primary key auto_increment comment 'ID,主键',
  3.     username varchar(20) comment '用户名',
  4.     password varchar(32) comment '密码',
  5.     name varchar(10) comment '姓名',
  6.     age tinyint unsigned comment '年龄'
  7. ) comment '用户表';
  8. insert into user(id, username, password, name, age) values (1, 'daqiao', '123456', '大乔', 22),
  9.                                                            (2, 'xiaoqiao', '123456', '小乔', 18),
  10.                                                            (3, 'diaochan', '123456', '貂蝉', 24),
  11.                                                            (4, 'lvbu', '123456', '吕布', 28),
  12.                                                            (5, 'zhaoyun', '12345678', '赵云', 27);
复制代码
3). 配置Mybatis
  1. #数据库访问的url地址
  2. spring.datasource.url=jdbc:mysql://localhost:3306/web
  3. #数据库驱动类类名
  4. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  5. #访问数据库-用户名
  6. spring.datasource.username=root
  7. #访问数据库-密码
  8. spring.datasource.password=root
复制代码
1.jpg
配置文件注释标黄或者乱码解决方法:
2.jpg
把编码改成UTF-8 即可。

4). 编写Mybatis程序:编写Mybatis的持久层接口,定义SQL语句(注解)

  1. package com.zidiu.mapper;
  2. import com.zidiu.pojo.User;
  3. import org.apache.ibatis.annotations.Mapper;
  4. import org.apache.ibatis.annotations.Select;
  5. import java.util.List;
  6. @Mapper
  7. public interface UserMapper {
  8.     /**
  9.      * 查询全部
  10.      */
  11.     @Select("select * from user")
  12.     public List<User> findAll();
  13. }
复制代码
Idea语言注入设置
1.jpg
2.jpg
注解说明:
  • @Mapper注解:表示是mybatis中的Mapper接口
程序运行时,框架会自动生成接口的实现类对象(代理对象),并给交Spring的IOC容器管理
  • @Select注解:代表的就是select查询,用于书写select查询语句
5). 单元测试

在创建出来的SpringBoot工程中,在src下的test目录下,已经自动帮我们创建好了测试类 ,并且在测试类上已经添加了注解 @SpringBootTest,代表该测试类已经与SpringBoot整合。
该测试类在运行时,会自动通过引导类加载Spring的环境(IOC容器)。我们要测试那个bean对象,就可以直接通过@Autowired注解直接将其注入进行,然后就可以测试了。
  1. package com.zidiu;
  2. import com.zidiu.mapper.UserMapper;
  3. import com.zidiu.pojo.User;
  4. import org.junit.jupiter.api.Test;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.boot.test.context.SpringBootTest;
  7. import java.util.List;
  8. @SpringBootTest
  9. public class SpringbootMybatisQuickstartApplicationTests {
  10.     @Autowired
  11.     private UserMapper userMapper;
  12.     @Test
  13.     public void testFindAll(){
  14.         List<User> userList = userMapper.findAll();
  15.         for (User user : userList) {
  16.             System.out.println(user);
  17.         }
  18.     }
  19. }
复制代码
  1. #mybatis的配置
  2. mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
复制代码
完整版:
  1. #数据库访问的url地址
  2. spring.datasource.url=jdbc:mysql://localhost:3306/web
  3. #数据库驱动类类名
  4. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  5. #访问数据库-用户名
  6. spring.datasource.username=root
  7. #访问数据库-密码
  8. spring.datasource.password=root
  9. #mybatis的配置
  10. mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
复制代码
打开上述开关之后,再次运行单元测试,就可以看到控制台输出的SQL语句是什么样子的。
1.jpg
======================================================
常见的数据库连接池:C3P0 DBCP Druid Hikari (springboot默认)
现在使用更多的是:Hikari、Druid  (性能更优越)

1). Hikari(追光者) [默认的连接池]
2). Druid(德鲁伊)

①. 在pom.xml文件中引入依赖

  1. <dependency>
  2.     <!-- Druid连接池依赖 -->
  3.     <groupId>com.alibaba</groupId>
  4.     <artifactId>druid-spring-boot-starter</artifactId>
  5.     <version>1.2.19</version>
  6. </dependency>
复制代码
②. 在application.properties中引入数据库连接配置

  1. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  2. spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
  3. spring.datasource.druid.url=jdbc:mysql://localhost:3306/web
  4. spring.datasource.druid.username=root
  5. spring.datasource.druid.password=1234
复制代码
SpringBoot3+Vue3开发综合实战项目:
JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战

网站建设,公众号小程序开发,系统定制,软件App开发,技术维护【联系我们】手机/微信:17817817816 QQ:515138

QQ|Archiver|自丢网 ( 粤ICP备2024252464号-1 )

GMT+8, 2025-12-1 07:42

专注于网站建设,公众号小程序制作,商城小程序,系统定制,软件App开发

【联系我们】手机/微信:17817817816 QQ:515138

快速回复 返回顶部 返回列表