SpringBoot笔记(四)---springBoot整合jdbc及Druid数据源的使用

SpringBoot整合JDBC

  • 对于数据访问层,无论是SQL(关系型数据库)还是NOSQL(非关系型数据库),springBoot底层都是采用SpringData

    的方式统一处理;

  • springData是springBoot底层统一管理各种数据库的方式,springData也是spring中知名的项目

  • 官网:https://spring.io/projects/spring-data

1.创建一个JDBC的spring项目:导入web,jdbc,数据库驱动

       <!-- JDBC -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- Thymeleaf -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

2.进行配置文件的数据库连接:新建一个application.yml

spring:
  datasource:
    username: root
    password: 123
    url: jdbc:mysql://localhost:3306/zhang?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver

连接数据库:

在这里插入图片描述

3.test中进行测试,因为很多东西都被springboot进行封装好了,能够直接使用

@SpringBootTest
class JdbcApplicationTests {
    @Autowired
    // springboot就在dataSource中封装了很多增删改查的方法
    DataSource dataSource;
    @Test
    void contextLoads() {
        System.out.println(dataSource.getClass());
    }
}

4.Xxx Template:springBoot已经配置好的模板bean,当我们配置好数据源,连接数据库后就可以直接使用:

@RestController
public class JDBCController {

    @Autowired
    // 封装好的方法
    JdbcTemplate jdbcTemplate;
    // 进行查询操作
    @RequestMapping("/userList")
    public List<Map<String,Object>> listUser(){
        String sql="select * from t_user";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        return maps;
    }
    // 删除操作
    @RequestMapping("/userinsert")
    public int insert(){
        String sql="insert into t_user(loginName,loginPassword) values('zhangsansan','111')";
        jdbcTemplate.update(sql);
        return 1;
    }
}

5。更换数据源;源码中,当引入JDBC的依赖后,就会自动导入四个类型数据源;可以通过使用配置文件进行数据源的更换

例如:配置Druid数据源

spring.dataSource.type:com.alibaba.druid.pool.DruidDataSource

6.Druid数据源自带监控日志的功能,还可以及进行后台日志监控权限控制:

  • 导入Druid数据源依赖:

    <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>druid</artifactId>
         <version>1.1.12</version>
     </dependency>
    
  • 进行Druid的一些配置:例如,最大连接数量,等待时间,初始化数量…

    # springBoot 是不会自动注入这些属性的,需要自己绑定
    intitleSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    poolsPreparedStatement: true
    
    # 配置监控统计拦截的filter,stat:监控统计,log4j:日志记录(需要依赖),wall:防御SQL注入
    filters: stat,wall,log4j
    maxPoolPerparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
    
    <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
    </dependency>
    
  • 进行Druid数据源的自定义配置:

    • 将配置文件和数据源绑定

      @Configuration
      public class DruidConfig {
          // 这里的spring.datasource是配置文件的开头部分
          @ConfigurationProperties(prefix="spring.datasource")
          @Bean      // 放到Bean才会生效
          public DataSource druidDataSource(){
              return new DruidDataSource();
          }
      }
      
    • 进行Druid设置

      // 后台监控,相当于web.xml
      // 注意:/druid/*一定不要写成:/druid/**,页面会加载不出来
          @Bean
          public ServletRegistrationBean servletRegistrationBean(){
              ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new                        StatViewServlet(), "/druid/*");
              
              HashMap<String, String> initParameters = new HashMap<>();
              
              // 进行后台登录权限控制
              // 这里的关键字都是固定的不能自己随便写
              initParameters.put("loginUsername","admin");
              initParameters.put("loginPassword","123");
              
              // 设置谁可以进行访问,本机,全部......,也可以设置谁禁止访问
              initParameters.put("allow","localhost");
              bean.setInitParameters(initParameters);
              return bean;
          }
      

      设置完成后就会访问druid就会自动跳转到后台监控页面,这里可以对一些数据库的操作进行监控

    • 设置过滤器

       @Bean
          public FilterRegistrationBean filterRegistrationBean(){
              FilterRegistrationBean  bean = new FilterRegistrationBean();
              // 创建一个过滤器
              bean.setFilter(new WebStatFilter());
              HashMap<String, String> initParameters = new HashMap<>();
              // 不过滤什么文件
              initParameters.put("exclusions","*.js,*.css,/druid/**");
              bean.setInitParameters(initParameters);
              return bean;
          }
      
    • druid监控页面

定义不过滤什么文件

           initParameters.put("exclusions","*.js,*.css,/druid/**");
           bean.setInitParameters(initParameters);
           return bean;
       }

  • druid监控页面
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值