我的配置
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>springboot-base-druid-04</artifactId>
<version>1.0-SNAPSHOT</version>
<!--<packaging>war</packaging>-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.5</version>
</parent>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--web开发的场景启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--数据库相关配置启动器,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.18</version>
</dependency>
<!--驱动类-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.yaml:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource #使用Druid链接池
# username: 账号 //如果使用spring boot2整合druid连接池,使用此信息进行配置
druid:
url: jdbc:mysql://localhost:2206/day01
username: root
password: 123456
driver-class-name: com.mysql.jdbc.cj.Driver
#初始化时建立物理连接的个数
initial-size: 5
#连接池最小空闲数量
min-idle: 5
#连接池最大连接数量
max-idle: 20
#获取连接是最大等待时间,单位毫秒
max-wait: 60000
#申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效
test-while-idle: true
#既作为检测的间隔时间又作为testWhileIdle执行的依据
time-between-eviction-runs-mills: 60000
#销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接(配置在连接池中的最小生存时间)
min-evictable-idle-time-millis: 30000
#用来检测数据库连接是否有效的sql,必须是一个查询语句(oracle中为select 1 from dual)
validation-query: select 1
#申请链接时会执行validationQuery检测连接是否有效,开启会降低性能默认为true
test-on-borrow: false
#归还链接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
test-on-return: false
#是否缓存preparedStatement,也就是PSCache,PSCache对支持游标的数据库性能提升巨大
pool-prepared-statements: false
#要启动PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true
max-pool-prepared-statement-per-connection-size: -1
#整合多个DruidDataSource的监控数据
use-global-data-source-stat: true
UserController.java:
package com.atguigu.controller;
import com.atguigu.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private JdbcTemplate jdbcTemplate;
@GetMapping("list")
public List<User> list(){
//数据库
String sql = "select * from user;";
List<User> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
return list;
}
}
使用的工具版本:Spring3.0.5 、JAVA17、MySQL8.0.16
项目启动时日志报错提示找不到h2类,点进spring-boot-3-starter查看源码发现源码里面引入h2依赖的部分报错,于是在项目的pom.xml文件中重新引入了h2的依赖:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
这里因为我前面设置了spring的版本是3.0.3,就不在下面导的依赖中重新写对应得版本了,Spring会自动装配兼容的版本。
引入这个依赖后程序就可以正常启动了。