Spring Boot学习笔记17——数据访问(JDBC&Druid)

本文档介绍了Spring Boot中数据访问的基本概念,深入探讨了JDBC和自动配置原理,包括项目创建、自动配置的实现。接着详细讲解了如何整合Druid数据源并配置数据源监控,通过步骤演示了Druid监控页面的设置和访问。
摘要由CSDN通过智能技术生成

1. 关于数据访问

对于数据访问层,无论是SQL还是NOSQL,spring boot都默认采用整个Spring Data的方式进行统一处理,添加大量的自动配置,屏蔽了很多设置。引入各种xxTemplate,xxRepository来简化我们对数据访问层的操作,对我们来说只要进行简单的设置即可。

2. JDBC&自动配置原理

2.1 创建项目

打包方式还是jar
图片选中web模块,JDBC和mysql(spring data jdbc比 jdbc api更简洁高效)
图片然后我们可以在pom文件看到JDBC和MySQL的驱动依赖了
图片

yml文件(如果启动后控制台有报乱码的错误才在url最后加?serverTimezone=UTC

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://127.0.0.1:3306/sb?serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver

测试类

@SpringBootTest
class DataJdbc01ApplicationTests {
    @Autowired
    DataSource dataSource;
    @Test
    void contextLoads() throws SQLException {
        System.out.println(dataSource.getClass());
        Connection connection=dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }
}

效果
默认是用com.zaxxer.hikari.HikariDataSource作为数据源,数据源的相关配置都在DataSourceProperties里面

2.2 自动配置原理

查看依赖包org.springframework.boot.autoconfigure.jdbc

  1. 参考DataSourceConfiguration,根据配置创建数据源,默认使用Tomcat连接池;可以使用spring.datasource.type指定自定义的数据源类型
  2. SpringBoot默认可以支持
    org.apache.tomcat.jdbc.pool.DataSource/HikariDataSource/BasicDataSource
  3. 自定义数据源类型
	/**
	 * Generic DataSource configuration.
	 */
	@ConditionalOnMissingBean(DataSource.class)
	@ConditionalOnProperty(name = "spring.datasource.type")
	static class Generic {

   @Bean
   public DataSource dataSource(DataSourceProperties properties) {
       //使用DataSourceBuilder创建数据源,利用反射创建响应type的数据源,并且绑定相关属性
      return properties.initializeDataSourceBuilder().build();
   	}

	}
  1. DataSourceInitializer extends ApplicationListener作用

    • runSchemaScripts():运行建表语句
    • runDataScripts():运行插入数据的sql语句

    默认只需要将文件命名为schema-*.sqldata-*.sql,我们也可以在yml加入以下语句,更改默认sql文件的名称,这样就可以更改其他名称啦
    图片

    我们把schema-all.sql放到resources中(spring boot2.x以上要在yml中加initialization-mode: always,不然无法执行sql语句)
    图片 然后启动主程序,可以看到数据库建表成功
    图片

  2. 操作数据库:自动配置了JdbcTemplate操作数据库
    创建controller.HelloController

    @Controller
    public class HelloController {
    
    @Autowired
    JdbcTemplate jdbcTemplate;
    
    @ResponseBody
    @GetMapping("/abc")
    public Map<String,Object> map(){
        List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from department");
        return list.get(0);
    }
    }
    

    启动,然后给表添加数据,在到浏览器访问
    图片


3. 整个Druid&配置数据源监控

3.1 步骤
  1. 加入druid依赖
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.8</version>
    </dependency>
    
  2. 在yml指定连接池type: com.alibaba.druid.pool.DruidDataSource
  3. 运行,成功切换成druid
    druid

3.2 配置数据源监控

我们可以在yml对数据源进行各种配置
yml我们需要创建config.DruidConfig,即Druid配置类

@Configuration
public class DruidConfig {

    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){//自定义数据源,yml中的其他配置才能有效
        return new DruidDataSource();
    }

    //配置Druid监控
    //1、配置一个管理后台的Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){

        ServletRegistrationBean bean=new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        Map<String,String> initParams=new HashMap<>();
        initParams.put("loginUsername","admin");//到StatViewServlet extends ResourceServlet中看能配什么参数
        initParams.put("loginPassword","123456");
        initParams.put("allow","");//默认就是允许所有访问,可设置为localhost
        initParams.put("deny","172.16.152.166");
        bean.setInitParameters(initParams);
        return  bean;
    }

    //2、配置一个web监控的filter
	@Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean=new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());

        Map<String,String> initParams=new HashMap<>();
        initParams.put("exclusions","*.js,*.css,/druid/*");

        bean.setInitParameters(initParams);
        bean.setUrlPatterns(Arrays.asList("/*"));

        return bean;
    }

}

一个Druid监控便完成,我们访问http://localhost:8080/druid,输入刚刚设置好的账号密码
图片来到了监控界面
监控界面然后我们访问前面设置的查询请求http://localhost:8080/abc,查看web应用
web应用有相应的结果啦


该SpringBoot学习笔记学习自雷神前辈,是对知识点的整理和自我认识的梳理,如有不当之处,欢迎指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值