八.springboot集成mybatis+druid数据库连接池
文章目录
- 前言
- 一、添加必要依赖
- 二、添加application-dev.yml配置
- 三、添加mybatis+druid配置
- 三、添加mybatis-config.xml
- 四、测试使用
- 1.在`TestController`中添加一个`testMybatis`
- 2.在`TestService`中添加对应接口
- 3.实现`TestService`
- 4.最终项目结构
- 5.测试接口
- 五、Druid监控功能
- 总结
前言
上一章节我们通过Mybatis-Generator
自动生成了model、mapper、xml
代码,这一章节我们就集成mybatis+druid
数据库连接池来对数据库进行操作,为什么使用这两个组合,其原因如下:
- Druid 是一个高性能的数据库连接池,结合了 C3P0 和 DBCP 等连接池的优点,能够高效地管理数据库连接
- Druid 已经在阿里巴巴的多个生产环境中部署,经过了大规模的严苛考验,具有较高的稳定性和可靠性
- MyBatis 提供了灵活的 SQL 映射和定制化功能,结合 Spring Boot 的自动配置机制,可以快速搭建高效的数据访问层
- Druid 内置了强大的 StatFilter 插件,能够详细统计 SQL 的执行性能,包括执行时间、慢查询等,这对于线上分析数据库访问性能非常有帮助
一、添加必要依赖
我们在父项目中添加mybatis
和mysql
相关依赖
dependencies {
...
implementation 'com.mysql:mysql-connector-j:9.2.0'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.4'
}
二、添加application-dev.yml配置
我们在light-api
中进行测试,为了后期开发环境和生产环境的配置区别,在light-api/src/main/resources
中创建一个application-dev.yml
配置文件作为开发环境配置。
spring:
application:
name: light-api
profiles:
active: dev
server:
port: 9001
三、添加mybatis+druid配置
application-dev.yml
配置如下,配置项参考注释,完整配置请参考Druid参考配置:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/light-db?useSSL=false&useUnicode=true&characterEncoding=UTF-8
driver-class-name: com.mysql.jdbc.Driver
# 数据库账号
username: root
# 数据库密码
password: 123456
# 设置类型为 DruidDataSource
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 5
min-idle: 10
max-active: 20
validation-query: SELECT 1
filters: stat,slf4j
# 统计 SQL 执行情况
stat:
merge-sql: true
log-slow-sql: true
slow-sql-millis: 5000
web-stat-filter:
#不统计这些请求数据
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
#访问监控网页的登录用户名和密码
stat-view-servlet:
enabled: true
url-pattern: /druid/*
login-username: druid
login-password: druid
# MyBatis
mybatis:
# 搜索指定包别名
type-aliases-package: com.light.**.entity
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapper-locations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis-config.xml
logging:
level:
org.mybatis: debug
com.light.generator.mapper: debug
三、添加mybatis-config.xml
在light-api/src/main/resources
中创建一个mybatis-config.xml
参数说明参考注解,全部配置项参考Mybatis参考配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 全局参数 -->
<settings>
<!-- 使全局的映射器启用或禁用缓存 -->
<setting name="cacheEnabled" value="true"/>
<!-- 查询时,关闭关联对象即时加载以提高性能 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能 -->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 允许JDBC 支持自动生成主键 -->
<setting name="useGeneratedKeys" value="false"/>
<!-- 配置默认的执行器.SIMPLE就是普通执行器;REUSE执行器会重用预处理语句(prepared statements);BATCH执行器将重用语句并执行批量更新 -->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!-- 指定 MyBatis 所用日志的具体实现 -->
<setting name="logImpl" value="SLF4J"/>
<!-- 使用驼峰命名法转换字段 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
四、测试使用
1.在TestController
中添加一个testMybatis
/**
* 测试插入user
* @param user 对象
* @return
*/
@PostMapping("/insertUser")
public BaseResult<?> insertUser(@RequestBody TUser user) {
return BaseResult.success(testService.insertUser(user));
}
/**
* 获取用户列表
* @return
*/
@GetMapping("/getUserList")
public BaseResult<?> getUserList() {
return BaseResult.success(testService.getUserList());
}
2.在TestService
中添加对应接口
package com.light.api.service;
import com.light.generator.model.TUser;
import java.util.List;
public interface TestService {
int insertUser(TUser user);
List<TUser> getUserList();
}
3.实现TestService
package com.light.api.service.impl;
import com.light.api.service.TestService;
import com.light.generator.mapper.TUserMapper;
import com.light.generator.model.TUser;
import com.light.generator.model.TUserExample;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TestServiceImpl implements TestService {
@Resource
private TUserMapper userMapper;
@Override
public int insertUser(TUser user) {
return userMapper.insert(user);
}
@Override
public List<TUser> getUserList() {
TUserExample example = new TUserExample();
example.createCriteria().andIdIsNotNull();
List<TUser> tUsers = userMapper.selectByExample(example);
return tUsers;
}
}
4.最终项目结构
5.测试接口
- 测试添加user数据
- 测试获取user数据
五、Druid监控功能
我们在druid配置中添加了监控相关的配置:
- 通过 spring.datasource.filter.stat 配置了 StatFilter ,统计监控信息。
- 通过 spring.datasource.filter.stat-view-servlet 配置了 StatViewServlet
访问http://127.0.0.1:9001/druid
即可进入Druid监控页面,输入配置的用户名和密码进入
总结
以上就是springboot中使用mybatis+druid来操作数据库的过程,druid还有很多功能,比如可以配置多个数据源,将在后续的文章中介绍