当前位置: 首页 > article >正文

八.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 的执行性能,包括执行时间、慢查询等,这对于线上分析数据库访问性能非常有帮助

一、添加必要依赖

我们在父项目中添加mybatismysql相关依赖

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还有很多功能,比如可以配置多个数据源,将在后续的文章中介绍


http://www.kler.cn/a/544545.html

相关文章:

  • 海外服务器都有什么作用?
  • 怎么用DeepSeek批量生成抖音脚本
  • unity 0基础自学2.2:射线与button UI的使用
  • Python的秘密基地--[章节15] Python 多线程与并发编程
  • 学习总结2.13
  • Colorful/七彩虹 将星X15 AT 23 原厂Win11家庭中文版系统 带F9 Colorful一键恢复功能
  • Vue2中常用指令
  • Django创建超管用户
  • 字节跳动发布国产 AI 编程器 Trae,对标 cursor,免费使用Claude 3.5
  • 全面了解HTTP(一)
  • 阿里 231 九宫格逆向协议通过,图片还原,模型识别,ai轨迹,成功率99,阿里全家桶都有
  • zyNo.24
  • 亚远景-ASPICE 4.0 与 AI 驱动的汽车软件开发:未来趋势与挑战
  • 【前端开发学习笔记16】Vue_9
  • JUnit 4与JUnit 5的差异详解
  • 功率半导体展聚焦 APSME 2025,共探功率半导体发展新征程
  • 硬件电路(11)-电容
  • 什么是科技查新报告
  • Win10/11系统下WSL2+Ubuntu20.04的全流程安装指南(支持安装至 D 盘)
  • 【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第八节】