八.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-apiprofiles:active: devserver: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-8driver-class-name: com.mysql.jdbc.Driver# 数据库账号username: root# 数据库密码password: 123456# 设置类型为 DruidDataSourcetype: com.alibaba.druid.pool.DruidDataSourcedruid:initial-size: 5min-idle: 10max-active: 20validation-query: SELECT 1filters: stat,slf4j# 统计 SQL 执行情况stat:merge-sql: truelog-slow-sql: trueslow-sql-millis: 5000web-stat-filter:#不统计这些请求数据exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"#访问监控网页的登录用户名和密码stat-view-servlet:enabled: trueurl-pattern: /druid/*login-username: druidlogin-password: druid
# MyBatis
mybatis:# 搜索指定包别名type-aliases-package: com.light.**.entity# 配置mapper的扫描,找到所有的mapper.xml映射文件mapper-locations: classpath*:mapper/**/*Mapper.xml# 加载全局的配置文件configLocation: classpath:mybatis-config.xmllogging:level:org.mybatis: debugcom.light.generator.mapper: debug

三、添加mybatis-config.xml

light-api/src/main/resources中创建一个mybatis-config.xml参数说明参考注解,全部配置项参考Mybatis参考配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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 {@Resourceprivate TUserMapper userMapper;@Overridepublic int insertUser(TUser user) {return userMapper.insert(user);}@Overridepublic 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.mzph.cn/pingmian/69869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FreeRTOS 知识点总结(一):基础概念与核心特性

FreeRTOS 是一款广泛应用于嵌入式领域的实时操作系统&#xff08;RTOS&#xff09;&#xff0c;以其轻量级、开源性、高可裁剪性等特点&#xff0c;成为许多嵌入式开发项目的首选。本文将从基础概念、核心特性、任务管理等方面对 FreeRTOS 进行总结&#xff0c;帮助初学者快速入…

一文了解zookeeper

1.ZooKeeper是什么 简单来说&#xff0c;她是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务 具体来说&#xff0c;他可以做如下事情&#xff1a; 分布式配置管理&#xff1a;ZooKeeper可以存储配置信息&#xff0c;应用程序可以动态读取配置信息。分布式同步&a…

游戏引擎学习第100天

仓库:https://gitee.com/mrxiao_com/2d_game_2 昨天的回顾 今天的工作重点是继续进行反射计算的实现。昨天&#xff0c;我们开始了反射和环境贴图的工作&#xff0c;成功地根据法线显示了反射效果。然而&#xff0c;我们还没有实现反射向量的计算&#xff0c;导致反射交点的代…

MYSQL的管理备份

一、系统数据库 mysql数据库安装完成后,自带了四个数据库,具体作用如下: mysql:存储MySQL服务器正常运行所需的各种信息(时区、主从、用户、权限等); information_schema:提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等; performanc…

【时时三省】(C语言基础)简单的算法举例

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 判定2000—2500年中的每一年是否为闰年&#xff0c;并将结果输出。 本先分析闰年的条件&#xff1a; &#xff08;1&#xff09;能被4整除&#xff0c;但不能被100整除的年份都是闰年&…

基于单片机的智能奶茶机(论文+源码+图纸)

1总体架构设计 本课题为基于单片机的智能奶茶机设计&#xff0c;其系统架构上设计如图2.1所示&#xff0c;整个系统包括了DS18B20温度传感器、继电器模块、LCD液晶、蜂鸣器、按键、STC89C52单片机等器件&#xff0c;在功能上用户可以通过按键键控制选择甜度和添加物以及设置温度…

在线网校教育软件开发助力互联网时代教育发展

互联网时代&#xff0c;在线教育已成为推动教育事业发展的重要力量。开发优质的在线网校教育软件&#xff0c;能够有效整合资源、提升效率、促进公平&#xff0c;为教育发展注入新活力。以下是关键点&#xff1a; 一、 在线网校教育软件的优势 打破时空限制&#xff1a; 学生…

Air724 DTU数据上报json到v1/gateway/telemetry

Air724 DTU数据上报json到v1/gateway/telemetry 任务模板&#xff1a; functionsys.wait(10000)local taskname"userTask"log.info(taskname,"start")local nid 1local netmsg "UART_DATA_TO_NET"..nidwhile true dolocal t{}t.params {} -- …

基于微信小程序的场地预约设计与实现

第3章 系统设计 3.1系统设计目标 本系统的实现可以帮助体育馆场地信息的管理。帮助管理员对注册用户管理以及用户预约管理。同时可以帮助用户进行场地预约。本系统可以实现用户足不出户预约到需要的场地&#xff0c;为用户提供场地信息了解的平台。 3.2系统功能结构图 本系统的…

Kettle开发Jsoup组件进行网页爬取

1. 概述 在当今数据驱动的商业环境中&#xff0c;企业需要从各种来源收集和分析数据以支持决策。网页爬取作为一种数据收集手段&#xff0c;能够从网页中提取有价值的信息。Kettle作为一种强大的ETL工具&#xff0c;结合Jsoup库&#xff0c;可以实现高效、灵活的网页爬取功能。…

C++ Primer 跳转语句

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

tomcat html乱码

web tomcat html中文乱码 将html文件改成jsp <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%>添加 <meta charset"UTF-8">

[c语言日寄]在不完全递增序中查找特定要素

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…

【第1章:深度学习概览——1.2 深度学习与机器学习、传统人工智能的区别与联系】

在科技飞速发展的时代,AI 技术如同一颗璀璨的明星,照亮了我们生活的方方面面。今天,让我们一起深入探寻 AI 技术的演进历程,看看它是如何从最初的简单规则系统,一步步发展成为如今强大的智能技术。 一、开篇故事:三杯咖啡看懂三代 AI 想象一下,你经营着一家充满温馨氛…

小结:OSPF的网络类型,LSA

OSPF&#xff08;Open Shortest Path First&#xff09;是一个基于链路状态的内部网关协议&#xff08;IGP&#xff09;。以下是对OSPF网络类型、LSA类型、序列号与Age作用&#xff0c;以及相关配置指令的详细讲解。 一、OSPF的网络类型 OSPF支持多种网络类型&#xff0c;不同…

代码随想录-训练营-day26

452. 用最少数量的箭引爆气球 - 力扣&#xff08;LeetCode&#xff09; 这题是一个区间题&#xff0c;不过要求我们求最小的弓箭数&#xff0c;显然我们可以先进行排序&#xff0c;然后挨个比较气球的区间&#xff0c;如果两个气球的区间没有交集则弓箭数加一&#xff0c;如果有…

机器学习·决策树

前言 决策树是分类与回归问题中常用的方法之一。其实不仅是机器学习领域&#xff0c;在每天的日常决策中&#xff0c;我们都在使用决策树。流程图实际上就是决策树的可视化表示。 一、基本概念 决策树原理 通过一系列 逻辑规则&#xff08;特征分割条件&#xff09; 构建树形结…

Linux下载安装2

安装VMWare虚拟机 VMware是一个老牌的虚拟化软件。虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整。 下载CentOS 进入Centos官网找要下载的版本https://vault.centos.org/ …

Excel中不用复杂公式根据指定X列的数值N复制整行数据N行简单方法

Excel中不用复杂公式根据指定X列的数值N复制整行数据N行简单方法 1、在“数据表”sheet1中对指定X列&#xff08;假设X列的数字从X2开始到Xn结束&#xff09;求和&#xff0c;和为Y。 2、在“数据表”sheet1数据列之外新建一列Z&#xff0c;Z1输入表头“匹配数据列”&#xff…

DeepSeek、Kimi、文心一言、通义千问:AI 大语言模型的对比分析

在人工智能领域&#xff0c;DeepSeek、Kimi、文心一言和通义千问作为国内领先的 AI 大语言模型&#xff0c;各自展现出了独特的特点和优势。本文将从技术基础、应用场景、用户体验和价格与性价比等方面对这四个模型进行对比分析&#xff0c;帮助您更好地了解它们的特点和优势。…