zoukankan      html  css  js  c++  java
  • SpringBoot-数据访问(十五)

    1、JDBC

    启动springBoot项目,勾选JDBC和Mysql的驱动。springboot就会自动给我们生成对应的场景启动器。

    导入maven依赖

           <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>

    配置SpringBoot的配置文件

    spring:
      datasource:
        username: root
        password: 123456
        #?serverTimezone=UTC解决时区的报错
        url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
        driver-class-name: com.mysql.jdbc.Driver

    这里新版的驱动是需要加上时区的设置不了就会报错。

    test

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class JdbcApplicationTests {
    
        @Autowired
        DataSource dataSource;
    
        @Test
        public void contextLoads() throws SQLException {
    
            System.out.println("使用的数据源是:"+dataSource.getClass());
            Connection connection = dataSource.getConnection();
    
            System.out.println("连接是:"+connection);
        }
    
    }

    效果:

    使用的数据源是:class com.zaxxer.hikari.HikariDataSource

    连接:HikariProxyConnection@744021169 wrapping com.mysql.cj.jdbc.ConnectionImpl@67fc2aad

    HikariDataSource是数据源中效率特别高的一个数据源,springboot默认使用Hikari作为他的数据源。

    1.数据源的相关配置都在DataSourceProperties里面,

    2.SpringBoot默认可以支持:org.apache.tomcat.jdbc.pool.DataSource、HikariDataSource、BasicDataSource

    3、自定义数据源类型

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

    4、操作数据库:自动配置了JdbcTemplate操作数据库

    2、整合Druid数据源

    导入druid的maven依赖

    <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.12</version>
            </dependency>

    编写yml配置文件

    spring:
      datasource:
        username: root
        password: 123456
        #?serverTimezone=UTC解决时区的报错
        url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
        driver-class-name: com.mysql.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
    
        initialSize: 5
        minIdle: 5
        maxActive: 20
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true

    这时候我们需要去设置druidDataSource告诉springBoot不在使用默认的数据源使用—>Druid 数据源

        @ConfigurationProperties(prefix = "spring.datasource")
        @Bean
        public DataSource druidDataSource(){
    
    
            return new DruidDataSource();
        }

    运行发现我们配置的数据源生效了,最大连接数都生效了。

    Druid 数据源具有监控的功能,接下来我们配置访问后台的监控登录

        @Bean
        public ServletRegistrationBean statViewServlet() {
            ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
    
            Map<String, String> initParams = new HashMap<>();
            //后台允许谁可以访问
            initParams.put("loginUsername", "admin"); //后台管理界面的登录账号
            initParams.put("loginPassword", "123456"); //后台管理界面的登录密码
             //允许谁可以访问比如:localhost可以访问
            initParams.put("allow", "");
            //deny:Druid 后台拒绝谁访问
    
    
            //设置初始化参数
            bean.setInitParameters(initParams);
            return bean;
    
        }

    完成之后我们登陆  http://localhost:8080/druid/login.html  去访问。发现可以进入页面了。

    在配置过滤的请求和,和排除过滤的请求

     //WebStatFilter:用于配置Web和Druid数据源之间的管理关联监控统计
        @Bean
        public FilterRegistrationBean webStatFilter() {
            FilterRegistrationBean bean = new FilterRegistrationBean();
            bean.setFilter(new WebStatFilter());
    
            //exclusions:设置哪些请求进行过滤排除掉,从而不进行统计
            Map<String, String> initParams = new HashMap<>();
            initParams.put("exclusions", "*.js,*.css,/druid/*");
            bean.setInitParameters(initParams);
    
            //过滤所有的请求
            bean.setUrlPatterns(Arrays.asList("/*"));
            return bean;
        }

    这下就OK了,我们可以执行一条SQL语句看看Druid的后台有没有监控到!

  • 相关阅读:
    设计模式学习每日一记(16.模板方法模式)
    lrzsz工具移植交叉编译
    设计模式学习每日一记(17.解释器模式)
    鼠标键盘共享之Synergy工具
    wpf中textblock竖立显示文本
    c#中常会涉及到一些类,List的深度拷贝。
    SQL 2005 多表分页存储过程
    C#中的委托和事件(续)[转]
    制作sitemap与在线生成网站地图并提交
    操作EXcel
  • 原文地址:https://www.cnblogs.com/xiaoqiqistudy/p/11395692.html
Copyright © 2011-2022 走看看