JDBC
项目的搭建
- 一路向下
到这一步 可选 可不选
不选:请在pom.xml中添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
进行数据库配置
不加时区会报错
application.yml
spring:
datasource:
username: root
password: jhs123
url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT
driver-class-name: com.mysql.cj.jdbc.Driver
首先查看springboot 默认使用的数据源
@Test
void contextLoads() {
try {
System.out.println("目前正在使用的数据源" + dataSource.getClass());
System.out.println("获取链接数据库" + dataSource.getConnection());
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
测试结果
目前正在使用的数据源class com.zaxxer.hikari.HikariDataSource
2020-05-29 15:43:15.707 INFO 28064 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2020-05-29 15:43:15.891 INFO 28064 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
获取链接数据库HikariProxyConnection@1081344572 wrapping com.mysql.cj.jdbc.ConnectionImpl@3ed0918d
恭喜 jdbc 搭建成功
写一个简单的Controller
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
import java.util.Map;
@Controller
public class HelloController {
@Autowired
JdbcTemplate jdbcTemplate;
@ResponseBody
@GetMapping("/jhs")
public List<Map<String, Object>> add() {
List<Map<String, Object>> mapList = jdbcTemplate.queryForList("select * from user");
return mapList;
}
}
JDBC 的配置就到此结束
Druid
环境准备
- 添加 druid jar
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
- 修改配置文件
spring:
datasource:
username: root
password: jhs123
url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT
driver-class-name: com.mysql.cj.jdbc.Driver
# 修改数据源 默认使用 HikariDataSource
type: com.alibaba.druid.pool.DruidDataSource
- 在进行测试 使用同一个测试
目前正在使用的数据源class com.alibaba.druid.pool.DruidDataSource
2020-05-29 15:45:30.128 INFO 21160 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
获取链接数据库com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@3e33d73e
此时 数据源已经切换好了
下面使用 比较有特点的功能 监控
修改一下配置文件
在application.yml中 添加
只有使用的是Druid 才可以使用
# log4j 日志 需要导入 log4j
# wall 安全 防止sql注入
# stat 监控统计
filters: log4j,stat,wall
导入log4j的jar包
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
添加一个Druid 的配置类
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class DruidConfig {
/**
* 和 application.yml 配置文件中的 spring.datasource 配置进行绑定
*/
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource() {
return new DruidDataSource();
}
/**
* 后台监控
* Dtuid 已经为我们准备好了 我们只需将它为我们提供的servlet 注册的 springboot中
*
* @return
*/
@Bean
public ServletRegistrationBean statViewServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map<String, String> initParameters = new HashMap<>();
initParameters.put("loginUsername", "admin");//固定的KEY
initParameters.put("loginPassword", "123456");
initParameters.put("allow","");
servletRegistrationBean.setInitParameters(initParameters);//初始化参数
return servletRegistrationBean;
}
}
可能出现的错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to bind properties under 'spring.datasource' to javax.sql.DataSource:
Property: spring.datasource.filters
Value: stat,wall,log4j
Origin: class path resource [application.yml]:24:14
Reason: org.apache.log4j.Logger
Action:
Update your application's configuration
应该就是log4j的jar 包 没有导入 进去 maven的问题
效果:
http://localhost:8080/druid.html
每一次的sql 都在检查中 具体使用 请查看 官方文档
Druid 就到此为止