一、使用jdbc的方式进行数据访问
对于数据访问层,无论是SQL还是NOSQL springboot底层都是使用springdata的方式进行统一处理。
创建项目时 选中jdbc, mysql的依赖后期自己手动添加5.0版本
1. 在yml中配置信息:
spring:datasource:username: rootpassword: "0000"url: jdbc:mysql://localhost:3306/libsdriver-class-name: com.mysql.jdbc.Driver
2. 写测试方法 ,【之前先自动注入一个 DataSource对象】
@RunWith(SpringRunner.class)@SpringBootTestclass SpringBootDataApplicationTests {@AutowiredDataSource dataSource;@Testvoid contextLoads() throws SQLException {Connection connection = dataSource.getConnection();Statement statement = connection.createStatement();ResultSet set = statement.executeQuery("select * from books");while (set.next()){String bookName = set.getString("bookName");System.out.println(bookName);}connection.close();}}
3. 注意:
- 创建springboot项目时,如果勾选了MySQL驱动的话,springboot的mysql驱动是8.0版本的,不兼容 所以不要勾,自己手动添加mysql依赖
在application.yaml 中配置数据库连接信息的时候,要把密码用 “” 括起来 不然报密码错误
二、整合Druid数据源
Druid是阿里巴巴开源平台上一个数据库连接池实现,结合了C3P0,DBCP等等数据库连接池的优点,同时加入了日志监控
- Druid可以很好的监控数据库连接池和sql的执行情况,天生就是针对监控而生的数据库连接池
- spring boot 2.0 以上默认使用 Hikari 数据源,可以说 Hikari与Druid都是当前javaweb上最优秀的数据源。
1. com.alibaba.druid.pool.DruidDataSource基本参数配置如下
三、Druid使用
1. 导入Druid依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.4</version></dependency>
顺手导入log4j依赖
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>
2. 在application配置参数
spring:datasource:password: "0000"username: rooturl: jdbc:mysql://localhost:3306/libsdriver-class-name: com.mysql.jdbc.Driver# 配置德鲁伊数据库连接池type: com.alibaba.druid.pool.DruidDataSource#SpringBoot默认是不注入这些的,需要自己绑定#druid数据源专有配置initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入#如果允许报错,java.lang.ClassNotFoundException: org.apache.Log4j.Properity#则导入log4j 依赖就行filters: stat,wall,log4jmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
3. 编写DruidConfig类
url地址栏输入 localhost:8080/druid 就会出现一个登录页面,账号密码是代码里的
/*** @date: 2021/1/7 0:27* @author: 易学习* 此配置文件的作用是 把application.yaml里面专属配置给绑定起来*/@Configurationpublic class DruidConfig {/*** 将数据源添加到容器中,并且绑定专属配置* @return*/@ConfigurationProperties(prefix = "spring.datasource")@Beanpublic DataSource druidDataSource(){return new DruidDataSource();}/*** 后台监控 [死代码]* @return*/@Beanpublic ServletRegistrationBean a(){ServletRegistrationBean<StatViewServlet> bean =new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");// 配置后台登录的账号密码Map<String, String> initParameters = new HashMap<>(16);// 增加配置 key是固定的 loginUsername loginPasswordinitParameters.put("loginUsername", "admin");initParameters.put("loginPassword", "123456");// 允许谁可以访问, 如果 value 为"" 则表示所有人可以访问initParameters.put("allow","");// 设置初始化参数bean.setInitParameters(initParameters);return bean;}}

四、Druid spring boot starter 使用
1、添加官方的starter
<!-- druid starter --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.17</version></dependency><!--mysql starter--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><!-- jdbc依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>
2、分析自动配置
- 扩展配置项
**spring.datasource.druid ** DruidSpringAopConfiguration.``**class**, 监控SpringBean的;配置项:**spring.datasource.druid.aop-patterns**DruidStatViewServletConfiguration.``**class**, 监控页的配置:**spring.datasource.druid.stat-view-servlet**;默认开启DruidWebStatFilterConfiguration.``**class**, web监控配置;**spring.datasource.druid.web-stat-filter**;默认开启DruidFilterConfiguration.``**class**}) 所有Druid自己filter的配置
3、配置模板
spring:datasource:username: rootpassword: "0000"driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatisdruid:filters: stat,wall # stat开启web监控,wall开启防火墙stat-view-servlet:enabled: true # 开启监控页 默认是falselogin-username: zhangsan # 监控也登录用户名login-password: "123123" #监控也登录密码web-stat-filter:enabled: true # 开启监控web应用url-pattern: /* # 监控哪些# 排除哪些 [有默认值]exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"filter:stat: # 开启web监控enabled: trueslow-sql-millis: 1000 # 超过1000毫秒的查询都是慢查询log-slow-sql: true # 记录到日志wall: # 开启防火墙enabled: true
