创建名为springboot_druid的新module,过程参考3.1节

5.1、引入相关依赖

注意:虽然本文使用的是 spring boot 2.7.18 和 MySQL 5.7 ,但是出于可移植性、可扩展性和兼容性方面的考虑,

druid 的启动器使用的是 spring boot 3 版本的,MySQL 的驱动使用的是 MySQL 8 版本的。

        <!-- jdbc启动器的依赖(包括 jdbctemplate 和事务相关的依赖和配置)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency> <!-- druid启动器的依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>1.2.20</version>
</dependency> <!-- MySQL驱动的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>

5.2、配置druid相关参数

注意:在 spring boot 2 中,类似 spring.datasource.druid.url 的参数名称可以省略 druid 写成 spring.datasource.url ,

但是在 spring boot 3 中 druid 不能省略,因此为了能同时适用 spring boot 2 和 3,本文配置示例没有 druid 。

# 连接池类型(核心配置)
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 数据库驱动名称(核心配置)
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库url(核心配置)
spring.datasource.druid.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8
# 数据库用户名(核心配置)
spring.datasource.druid.username=root
# 数据库密码(核心配置)
spring.datasource.druid.password=root
# 初始化时建立物理连接的个数
spring.datasource.druid.initial-size=5
# 连接池的最小空闲数量
spring.datasource.druid.min-idle=5
# 连接池最大连接数量
spring.datasource.druid.max-active=20
# 获取连接时最大等待时间,单位毫秒
spring.datasource.druid.max-wait=60000
# 申请连接的时候检测,如果等待时间大于time-between-eviction-runs-millis,执行validation-query检测连接是否有效。
spring.datasource.druid.test-while-idle=true
# 既作为检测的间隔时间,又作为test-while-idle执行的依据
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 销毁线程时,检测当前连接的最后活动时间与当前时间的差值,差值大于该值时关闭当前连接
spring.datasource.druid.min-evictable-idle-time-millis=30000
# 用来检测数据库连接是否有效的sql,必须是一个查询语句(oracle中为 select 1 from dual)
spring.datasource.druid.validation-query=select 1
# 申请连接时会执行validation-query检测连接是否有效,开启会降低性能,默认为true
spring.datasource.druid.test-on-borrow=false
# 归还连接时会执行validation-query检测连接是否有效,开启会降低性能,默认为true
spring.datasource.druid.test-on-return=false
# 是否缓存preparedStatement,也就是PSCache,
# PSCache对支持游标的数据库性能提升巨大,比如说oracle,但在mysql下建议关闭。
spring.datasource.druid.pool-prepared-statements=false
# 要启用PSCache,必须配置大于0,当大于0时,pool-prepared-statements自动触发修改为true,
# 在Druid中,不会存在Oracle的PSCache占用内存过多的问题,所以要启用PSCache时可以把这个数值配置大一些,比如说100
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=-1
# 合并多个DruidDataSource的监控数据
spring.datasource.druid.use-global-data-source-stat=true

5.3、创建实体类

package online.liaojy.pojo;

import java.io.Serializable;

/**
* @author liaojy
* @date 2023/12/21 - 6:24
*/
public class Employee implements Serializable { private Integer empId;
private String empName;
private Integer age;
private String sex;
private String email; public Employee() {
} public Employee(Integer empId, String empName, Integer age, String sex, String email) {
this.empId = empId;
this.empName = empName;
this.age = age;
this.sex = sex;
this.email = email;
} public Integer getEmpId() {
return empId;
} public void setEmpId(Integer empId) {
this.empId = empId;
} public String getEmpName() {
return empName;
} public void setEmpName(String empName) {
this.empName = empName;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} @Override
public String toString() {
return "Employee{" +
"empId=" + empId +
", empName='" + empName + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", email='" + email + '\'' +
'}';
} }

5.4、使用JdbcTemplate查询数据

注意:在pom中,引入的是jdbc的启动器,除了有一系列业务情景相关的依赖之外,还会有对应的配置;

jdbcTemplate 也会自动被加载到ioc容器中,因此可以直接注入使用;

在编译阶段,因为没有手动使用注解将JdbcTemplate标识为一个bean组件,所以idea可能会提示(误报)找不到bean;

此外,还因为配置的是 druid 数据库连接池,所以 jdbcTemplate 也会自动使用 druid 数据库连接池

    @Autowired
private JdbcTemplate jdbcTemplate; @RequestMapping("/getAllEmployee")
public List<Employee> getAllEmployee(){
String sql = "select * from t_emp";
List<Employee> employeeList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Employee>(Employee.class));
return employeeList;
}

5.5、测试效果

5、SpringBoot2之整合Durid的更多相关文章

  1. 【SpringBoot】息队列介绍和SpringBoot2.x整合RockketMQ、ActiveMQ

    ========================13.消息队列介绍和SpringBoot2.x整合RockketMQ.ActiveMQ ======================= 1.JMS介绍和 ...

  2. 第二篇:SpringBoot2.0整合ActiveMQ

    本篇开始将具体介绍SpringBoot如何整合其它项目. 如何创建SpringBoot项目 访问https://start.spring.io/. 依次选择构建工具Maven Project.语言ja ...

  3. 消息队列介绍和SpringBoot2.x整合RockketMQ、ActiveMQ 9节课

    1.JMS介绍和使用场景及基础编程模型     简介:讲解什么是小写队列,JMS的基础知识和使用场景     1.什么是JMS: Java消息服务(Java Message Service),Java ...

  4. SpringBoot2.x整合Redis实战 4节课

    1.分布式缓存Redis介绍      简介:讲解为什么要用缓存和介绍什么是Redis,新手练习工具 1.redis官网 https://redis.io/download          2.新手 ...

  5. SpringBoot2.0 整合 QuartJob ,实现定时器实时管理

    一.QuartJob简介 1.一句话描述 Quartz是一个完全由java编写的开源作业调度框架,形式简易,功能强大. 2.核心API (1).Scheduler 代表一个 Quartz 的独立运行容 ...

  6. SpringBoot2.0 整合 Swagger2 ,构建接口管理界面

    一.Swagger2简介 1.Swagger2优点 整合到Spring Boot中,构建强大RESTful API文档.省去接口文档管理工作,修改代码,自动更新,Swagger2也提供了强大的页面测试 ...

  7. SpringBoot2.x 整合Spring-Session实现Session共享

    SpringBoot2.x 整合Spring-Session实现Session共享 1.前言 发展至今,已经很少还存在单服务的应用架构,不说都使用分布式架构部署, 至少也是多点高可用服务.在多个服务器 ...

  8. SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用

    一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层 ...

  9. SpringBoot2.0 整合 Redis集群 ,实现消息队列场景

    本文源码:GitHub·点这里 || GitEE·点这里 一.Redis集群简介 1.RedisCluster概念 Redis的分布式解决方案,在3.0版本后推出的方案,有效地解决了Redis分布式的 ...

  10. springboot2.0整合logback日志(详细)

    <div class="post"> <h1 class="postTitle"> springboot2.0整合logback日志(详 ...

随机推荐

  1. 什么是LLM大模型训练,详解Transformer结构模型

    本文分享自华为云社区<LLM 大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解>,作者:汀丶. 1.模型/训练/推理知识介绍 深度学习领域所谓的&quo ...

  2. scala怎么退出

    scala怎么退出 scala> :help //查看帮助 All commands can be abbreviated, e.g., :he instead of :help. :edit ...

  3. Java中对的创建与引用

    对象与引用 Java语言中除了基本数据类型以外都属于引用类型 Java中的对象是通过引用对其操作的 class Car{ String name; String color; int price; } ...

  4. 循环demo

      // demo1,输出1-100所有可以同时被2和3同时整除的数值         //方法1         // 循环生成 1-100的数值         // for(var i = 1  ...

  5. LeetCode 449. Serialize and Deserialize BST 序列化和反序列化二叉搜索树 (Java)

    题目: Serialization is the process of converting a data structure or object into a sequence of bits so ...

  6. IDEA的安装、激活(到25年2月)&汉化

    1,在官网下载IDEA软件,官网 2,下载之后,双击安装包,然后一直点击next即可. (中间可以按照自己的要求设置安装目录) 3,快捷方式和java打钩 4,点击install即可进行安装,时间有一 ...

  7. 项目管理--PMBOK 读书笔记(3)【项目经理的角色 】

    思维导图软件工具:https://www.xmind.cn/ 源文件地址:https://files-cdn.cnblogs.com/files/zj19940610/项目经理的角色.zip

  8. es6数组解构的原理初探

    原理 以前只用过数组解构为数组,或者将其他类数组解构为数组,但是还不知道对象为什么不能解构为数组 后面学习到了Symbol.iterator属性以后才知道,只要一个对象是可迭代的,那它就可以迭代为数组 ...

  9. 使用Blazor WebAssembly整合PocketBase的基础项目模板

    使用Blazor WebAssembly整合PocketBase的基础项目模板 在这篇博客文章中,我们将探讨如何创建一个集成PocketBase的基础Blazor WebAssembly项目.我们将涵 ...

  10. cuda性能优化-2.访存优化

    简介 在CUDA程序中, 访存优化个人认为是最重要的优化项. 往往kernel会卡在数据传输而不是计算上, 为了最大限度利用GPU的计算能力, 我们需要根据GPU硬件架构对kernel访存进行合理的编 ...