SpringBoot2----数据访问,大厂面试必备

@Test

void contextLoads()

{

    Long num = jdbcTemplate.queryForObject("select count(*) from employee", Long.class);

    System.out.println("查询到的记录数为: "+num);

}

}




![在这里插入图片描述](https://img-blog.csdnimg.cn/9c494be546d34c66884571021ed5c76d.png)



* * *



[](

)使用Druid数据源

=========================================================================



[](

)druid官方github地址

------------------------------------------------------------------------------



[druid官方github地址](

)



[github如果打不开,可以看这里](

)



> 整合第三方技术的两种方式:  

> 自定义  

> 找starter



* * *



[](

)自定义方式

--------------------------------------------------------------------



### [](

)创建数据源



        <groupId>com.alibaba</groupId>

        <artifactId>druid</artifactId>

        <version>1.1.17</version>

    </dependency>

<bean id=“dataSource” class=“com.alibaba.druid.pool.DruidDataSource”

	destroy-method="close">

	<property name="url" value="${jdbc.url}" />

	<property name="username" value="${jdbc.username}" />

	<property name="password" value="${jdbc.password}" />

	<property name="maxActive" value="20" />

	<property name="initialSize" value="1" />

	<property name="maxWait" value="60000" />

	<property name="minIdle" value="1" />

	<property name="timeBetweenEvictionRunsMillis" value="60000" />

	<property name="minEvictableIdleTimeMillis" value="300000" />

	<property name="testWhileIdle" value="true" />

	<property name="testOnBorrow" value="false" />

	<property name="testOnReturn" value="false" />

	<property name="poolPreparedStatements" value="true" />

	<property name="maxOpenPreparedStatements" value="20" /> 



**springboot的做法: 在配置类中给容器中直接注入一个数据源**



@Configuration

public class WebConfig implements WebMvcConfigurer

{

//给容器中放置一个数据源

@Bean

//将注入容器的DataSource组件的属性与配置文件中spring.datasource下面的值进行绑定

@ConfigurationProperties("spring.datasource")

public DataSource dataSource()

{

   return new DruidDataSource();

}

}




![在这里插入图片描述](https://img-blog.csdnimg.cn/cf80730edb4c4314be71de645925ad5a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUzMTU3MTcz,size_16,color_FFFFFF,t_70)



* * *



[](

)Driud内置监控页面功能开启

------------------------------------------------------------------------------



![在这里插入图片描述](https://img-blog.csdnimg.cn/75be94a08efa41518b2fe86b6ceb1baf.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUzMTU3MTcz,size_16,color_FFFFFF,t_70)



**需要在容器中放入一个servlet,这样才能开启监控功能**



//配置Druid的监控页面功能

@Bean

public ServletRegistrationBean statViewServlet()

{

    StatViewServlet statViewServlet=new StatViewServlet();

    //配置该servl拦截路径

    ServletRegistrationBean<StatViewServlet> serlvet = new ServletRegistrationBean<>(statViewServlet, "/druid/*");

    return serlvet;

} 



**只是打开了监控的页面**  

![在这里插入图片描述](https://img-blog.csdnimg.cn/102ee7407c5e474384cbf958b0870ef3.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUzMTU3MTcz,size_16,color_FFFFFF,t_70)



* * *



[](

)Driud监控统计功能开启(sql监控)

-----------------------------------------------------------------------------------



![在这里插入图片描述](https://img-blog.csdnimg.cn/eb443503a03b41ae84f1d252bd86010b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUzMTU3MTcz,size_16,color_FFFFFF,t_70)



//给容器中放置一个数据源

@Bean

//将注入容器的DataSource组件的属性与配置文件中spring.datasource下面的值进行绑定

@ConfigurationProperties("spring.datasource")

public DataSource dataSource() throws SQLException {

    DruidDataSource druidDataSource = new DruidDataSource();

    //加入监控功能

    druidDataSource.setFilters("stat");

    return druidDataSource;

} 



**当我们执行一次sql语句时,就可以去查询一下这个语句执行的相关信息**  

![在这里插入图片描述](https://img-blog.csdnimg.cn/8f4535db13024d04a0f1f724a0a33558.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUzMTU3MTcz,size_16,color_FFFFFF,t_70)



* * *



[](

)web-jdbc关联的监控数据

------------------------------------------------------------------------------



//WebStatFilter用于采集web-jdbc关联监控的数据

@Bean

public FilterRegistrationBean WebStatFilter(){

    WebStatFilter webStatFilter=new WebStatFilter();

    FilterRegistrationBean<WebStatFilter> fb= new FilterRegistrationBean<>(webStatFilter);

    fb.setUrlPatterns(Arrays.asList("/*"));

    fb.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");

    return  fb;

} 



![在这里插入图片描述](https://img-blog.csdnimg.cn/f6f63383c6424a99bf37e0fef11e347a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUzMTU3MTcz,size_16,color_FFFFFF,t_70)



* * *



[](

)开启防火墙功能

----------------------------------------------------------------------



//给容器中放置一个数据源

@Bean

//将注入容器的DataSource组件的属性与配置文件中spring.datasource下面的值进行绑定

@ConfigurationProperties("spring.datasource")

public DataSource dataSource() throws SQLException {

    DruidDataSource druidDataSource = new DruidDataSource();

    //加入监控功能, wall:开启防火墙功能

    druidDataSource.setFilters("stat,wall");

    return druidDataSource;

} 



![在这里插入图片描述](https://img-blog.csdnimg.cn/064f0d64dc464977807703c17c9bea49.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUzMTU3MTcz,size_16,color_FFFFFF,t_70)  

![在这里插入图片描述](https://img-blog.csdnimg.cn/21d31c1e53ff4d8c8fe4ac782aef01f0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUzMTU3MTcz,size_16,color_FFFFFF,t_70)



* * *



[](

)用户名和密码登录数据监控页面,开启监控页面的时候配置初始化参数即可

------------------------------------------------------------------------------------------------



//配置Druid的监控页面功能

@Bean

public ServletRegistrationBean statViewServlet()

{

    StatViewServlet statViewServlet=new StatViewServlet();

    //配置该servl拦截路径

    ServletRegistrationBean<StatViewServlet> serlvet = new ServletRegistrationBean<>(statViewServlet, "/druid/*");



    serlvet.addInitParameter("loginUsername","大忽悠");

    serlvet.addInitParameter("loginPassword","123456");

    return serlvet;

} 



![在这里插入图片描述](https://img-blog.csdnimg.cn/81c45f672f144c4094dfe1f40a35e65e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUzMTU3MTcz,size_16,color_FFFFFF,t_70)



* * *



[](

)使用官方starter方式

----------------------------------------------------------------------------



### [](

)1、引入druid-starter



        <groupId>com.alibaba</groupId>

        <artifactId>druid-spring-boot-starter</artifactId>

        <version>1.1.17</version>

    </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的配置**



private static final String FILTER_STAT_PREFIX = “spring.datasource.druid.filter.stat”;

private static final String FILTER_CONFIG_PREFIX = "spring.datasource.druid.filter.config";

private static final String FILTER_ENCODING_PREFIX = "spring.datasource.druid.filter.encoding";

private static final String FILTER_SLF4J_PREFIX = "spring.datasource.druid.filter.slf4j";

private static final String FILTER_LOG4J_PREFIX = "spring.datasource.druid.filter.log4j";

private static final String FILTER_LOG4J2_PREFIX = "spring.datasource.druid.filter.log4j2";

private static final String FILTER_COMMONS_LOG_PREFIX = "spring.datasource.druid.filter.commons-log";

private static final String FILTER_WALL_PREFIX = "spring.datasource.druid.filter.wall"; 



* * *



[](

)配置文件配置实例

-----------------------------------------------------------------------



spring:

datasource:

url: jdbc:mysql://localhost:3306/db_account

username: root

password: 123456

driver-class-name: com.mysql.jdbc.Driver



druid:

  aop-patterns: com.atguigu.admin.*  #监控SpringBean

  filters: stat,wall,slf4j     # 底层开启功能,stat(sql监控),wall(防火墙),slf4j(日志)



  stat-view-servlet:   # 配置监控页功能

    enabled: true

    login-username: admin

    login-password: admin

    resetEnable: false  #禁用重置按钮



  web-stat-filter:  # 监控web--url监控

    enabled: true

    urlPattern: /*

    exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'



  filter:

    stat:    # 对上面filters里面的stat的详细配置

      slow-sql-millis: 1000

      logSlowSql: true

      enabled: true

    wall:

      enabled: true

      config:

        drop-table-allow: false 



### [](

)官方文档



[官方文档](

)



配置项列表[https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8](

)



* * *



[](

)整合MyBaits

========================================================================



**引入starter**



**SpringBoot官方的Starter:spring-boot-starter-**\*



# 最后

金三银四马上就到了,希望大家能好好学习一下这些技术点

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](

)**

学习视频:

![](https://img-blog.csdnimg.cn/img_convert/9c76df21e2290fbe8a5168655784cb63.png)

大厂面试真题:

   enabled: true

          config:

            drop-table-allow: false 

[](

)官方文档

[官方文档](

)

配置项列表[https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8](

)


[](

)整合MyBaits

========================================================================

引入starter

SpringBoot官方的Starter:spring-boot-starter-*

最后

金三银四马上就到了,希望大家能好好学习一下这些技术点

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](

)**

学习视频:

[外链图片转存中…(img-9j8OhwiV-1631182559103)]

大厂面试真题:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值