基于Druid或HikariDataSource动态数据拉取

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 基于Druid或HikariDataSource动态数据拉取

一、项目依赖

springboot项目,默认使用HikariDataSource数据源,Druid依赖如下

 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
        </dependency>

二、数据表结构及数据

三、基于Druid代码

package com.lets.controller.system;
 
import com.alibaba.druid.pool.DruidDataSource;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
@Slf4j
public class Main {
    public static void main(String[] args) throws SQLException {
//      创建数据源
        DruidDataSource druid=new DruidDataSource();
//        设置数据url
        druid.setUrl("jdbc:postgresql://x.xxx.xx.xxx:xxxx/xxxx");
//        设置用户名
        druid.setUsername("xxxxx");
//        设置用户密码
        druid.setPassword("xxxxx");
//        设置驱动名称
        druid.setDriverClassName("org.postgresql.Driver");
//        数据库链接
        Connection connection = druid.getConnection();
//        设置预执行sql
        PreparedStatement preparedStatement = connection.prepareStatement("select * from dictionary where id=?");
//        补充占位符
        preparedStatement.setLong(1,1L);
//       获取返回结果
        ResultSet resultSet = preparedStatement.executeQuery();
//        输出返回结果
        while (resultSet.next()) {
//            根据数据库情况,合理获取对应列
            long ids = resultSet.getLong(1);
            String name = resultSet.getString(2);
            String code = resultSet.getString(3);
            log.info("id->{}    name->{}    code->{}",ids,name,code);
        }
        System.out.println(druid);
//        关闭资源
        if (preparedStatement!=null) {
            preparedStatement.close();
        }
        if (druid!=null) {
            connection.close();
        }
    }
}

四、基于 HikariDataSource代码

package com.lets.controller.system;
 
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
@Slf4j
public class Main2 {
    public static void main(String[] args) throws SQLException {
//        设置数据源配置
        HikariConfig configuration = new HikariConfig();
//        设置数据url
        configuration.setJdbcUrl("jdbc:postgresql://x.xx.xx.xx:xxx/xxx");
//        设置驱动名称
        configuration.setDriverClassName("org.postgresql.Driver");
//        设置用户名
        configuration.setUsername("xxxxx");
//        设置用户密码
        configuration.setPassword("xxxxx");
//      创建数据源
        HikariDataSource dataSource=new HikariDataSource(configuration);
//        数据库链接
        Connection connection = dataSource.getConnection();
//        设置预执行sql
        PreparedStatement preparedStatement = connection.prepareStatement("select * from dictionary where id=?");
//        补充占位符
        preparedStatement.setLong(1,1L);
//       获取返回结果
        ResultSet resultSet = preparedStatement.executeQuery();
//        输出返回结果
        while (resultSet.next()) {
//            根据数据库情况,合理获取对应列
            long ids = resultSet.getLong(1);
            String name = resultSet.getString(2);
            String code = resultSet.getString(3);
            log.info("id->{}    name->{}    code->{}",ids,name,code);
        }
        System.out.println(dataSource);
//        关闭资源
        if (preparedStatement!=null) {
            preparedStatement.close();
        }
        if (dataSource!=null) {
            connection.close();
        }
    }
}

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
7月前
|
开发框架 监控 前端开发
实时数据更新与Apollo:探索GraphQL订阅
实时数据更新与Apollo:探索GraphQL订阅
|
7月前
|
消息中间件 JSON druid
Druid:通过 Kafka 加载流数据
Druid:通过 Kafka 加载流数据
112 0
|
7月前
|
Java 关系型数据库 MySQL
【mybatis-plus】自定义多数据源,动态切换数据源事务失效问题
【mybatis-plus】自定义多数据源,动态切换数据源事务失效问题
【mybatis-plus】自定义多数据源,动态切换数据源事务失效问题
|
7月前
|
SQL 监控 druid
Druid数据库连接池简介及应用推广(老项目翻出来做下记录)
Druid数据库连接池简介及应用推广(老项目翻出来做下记录)
|
存储 druid Java
Springboot+Druid动态切换数据源
关于数据源的切换,在实际使用中经常出现,本文主要是使用Druid,最近经常使用到,根据以往项目的使用,调整后进行记录,方便自己以后查看,也便于大家一起学习
1739 0
|
SQL druid Java
基于springboot+jpa 实现多租户动态切换多数据源 - 使用Flyway实现多数据源数据库脚本管理和迭代更新
基于springboot+jpa 实现多租户动态切换多数据源 - 使用Flyway实现多数据源数据库脚本管理和迭代更新
1689 0
基于springboot+jpa 实现多租户动态切换多数据源 - 使用Flyway实现多数据源数据库脚本管理和迭代更新
|
SQL 缓存 Oracle
看了源码才知道Seata AT是这样获取数据表的元数据的
看了源码才知道Seata AT是这样获取数据表的元数据的
437 0
看了源码才知道Seata AT是这样获取数据表的元数据的
|
SQL druid Java
SpringBoot内置数据源-持久化-数据库
SpringBoot内置数据源-持久化-数据库
SpringBoot内置数据源-持久化-数据库
|
SQL 安全 JavaScript
SpringBoot整合Flyway完成数据库持久化迭代更新
每次服务的代码更新部署,难免会存在`数据库结构`的变更以及`字典数据的添加`,手动`执行更新脚本`是一个`耗时耗力`的工作,而且还会出现遗漏或者其他状况,`SpringBoot`内部集成了一个自动执行数据库脚本的第三方依赖`Flyway`来解决这个繁琐的问题。