--最佳实践配置(.yml)

gs.oracle:
#driverClassName: oracle.jdbc.driver.OracleDriver
driverClassName: oracle.jdbc.OracleDriver
username: myuser
password: root
url: jdbc:oracle:thin:@127.0.0.1:1521:orcl

--最佳实践(注意在springboot的.yml中配置gs.oracle,若使用gs_oracle,@@ConfigurationProperties会提示使用规范配置)

package com.dhht.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; /**
* @Author: sh
* @Description: oracleDataCfg 前置数据库配置类
* @Date: 9:26 2019/7/23
*/
@Component
@ConfigurationProperties(prefix = "gs.oracle")
@Data
public class OrcaleDataCfg { private String driverClassName;
private String username;
private String password;
private String url;
}

--最佳实践DbConnect

package com.dhht.wechat.util;

import com.alibaba.druid.pool.DruidDataSource;
import com.dhht.config.OrcaleDataCfg;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import javax.annotation.Resource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Date;
import java.util.List;
import java.util.Map; /**
* @Author: sh
* @Description: DbConnect
* @Date: 23:01 2019/7/22
*/
@Component
public class DbConnect { @Resource
OrcaleDataCfg orcaleDataCfg; private static DruidDataSource dataSource = null;
private static JdbcTemplate jdbcTemplate = null; /**
* 构造函数完成数据库的连接和连接对象的生成
*
* @throws Exception
*/
private DbConnect() { } public synchronized DruidDataSource GetDbConnect() throws Exception {
try {
if (dataSource == null) {
dataSource = new DruidDataSource();
//设置连接参数
dataSource.setUrl(orcaleDataCfg.getUrl());
dataSource.setDriverClassName(orcaleDataCfg.getDriverClassName());
dataSource.setUsername(orcaleDataCfg.getUsername());
dataSource.setPassword(orcaleDataCfg.getPassword());
//配置初始化大小、最小、最大
dataSource.setInitialSize(5);
dataSource.setMinIdle(5);
dataSource.setMaxActive(5);
//连接泄漏监测
dataSource.setRemoveAbandoned(true);
dataSource.setRemoveAbandonedTimeout(30);
//配置获取连接等待超时的时间
dataSource.setMaxWait(20000);
//配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
dataSource.setTimeBetweenEvictionRunsMillis(20000);
//防止过期,Oracle必须添加 FROM DUAL!
dataSource.setValidationQuery("SELECT 'x' FROM DUAL");
dataSource.setTestWhileIdle(true);
dataSource.setTestOnBorrow(true);
return dataSource;
}
} catch (Exception e) {
return null;
}
return null;
} /**
* 取得已经构造生成的数据库连接
*
* @return 返回数据库连接对象
* @throws Exception
*/
public Connection getConnect() throws Exception {
Connection con = null;
try {
GetDbConnect();
con = dataSource.getConnection();
} catch (Exception e) {
throw e;
}
return con;
} public synchronized JdbcTemplate getJdbcTemplate() throws Exception{
DruidDataSource druidDataSource = GetDbConnect();
if(jdbcTemplate==null){
jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(druidDataSource);
}
return jdbcTemplate;
} public static void main(String[] args) throws Exception {
DbConnect dbConnect = new DbConnect();
Connection connection = dbConnect.getConnect();
String sql = "SELECT * from DZHY_GAYZ_KZLOG";
PreparedStatement ps = connection.prepareStatement(sql);
ResultSet resultSet = ps.executeQuery();
if (resultSet.next()) {
System.out.println(resultSet.getInt(1));
}
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
String SQL = "insert into DZHY_GAYZ_KZLOG (id,uniscid,entname,startdate,enddate,kz_uniscid,kz_entname) values (?,?,?,?,?,?,?)";
jdbcTemplate.update(SQL,DateUtil.get32UUIDMilli(),"333","需要刻章33",new Date(),new Date(),"33-33","刻章店33");
}
}

java代码实现数据源切换(连接池简单粗暴)的更多相关文章

  1. 2017.10.21 Java中的数据源与连接池技术

    1.数据源技术就是预先建立好一定的数量的数据库连接,并将这些连接保存在连接池中,有连接池负责对这些数据库连接管理,当访问数据库时,只需要从连接池中取出有空闲状态的数据库连接:当程序访问数据库结束时,释 ...

  2. 《深入理解mybatis原理3》 Mybatis数据源与连接池

    <深入理解mybatis原理> Mybatis数据源与连接池 对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对MyBatis框架的数据源结构 ...

  3. java基础(30):DBUtils、连接池

    1. DBUtils 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils. DBUtils就是JDBC的 ...

  4. JAVA基础之DBUtils与连接池

    利用DBUtils进一步简化JDBC数据库的增删改查的代码,同时利用从连接池中接取连接,进而进行简化和减少资源的消耗! 一.DBUtils: 1.DBUtils就是JDBC的简化开发工具包.需要项目导 ...

  5. 深入理解Spring Boot数据源与连接池原理

    ​ Create by yster@foxmail.com 2018-8-2 一:开始 在使用Spring Boot数据源之前,我们一般会导入相关依赖.其中数据源核心依赖就是spring‐boot‐s ...

  6. eclipse下jdbc数据源与连接池的配置及功能简介

    今天在做四则运算网页版的时候遇到了一个困惑,由于需要把每个产生的式子存进 数据库,所以就需要很多次重复的加载驱动,建立连接等操作,这样一方面写程序不方便,加大了程序量,另一方面,还有导致数据库的性能急 ...

  7. Spring(Bean)4 配置数据源、连接池

    <!-- 配置数据源 Mysql c3p0: 连接池. <bean id="dataSource" class="com.mchange.v2.c3p0.Co ...

  8. Java常见的开源数据连接池有哪些,并对参数做出简单的说明

    (1)DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP. (2)c3p0 c3p ...

  9. mybatis数据源与连接池

    1.概念介绍1.1 数据源:顾名思义,数据的来源,它包含了数据库类型信息,位置和数据等信息,一个数据源对应一个数据库. 1.2 连接池:在做持久化操作时,需要通过数据库连接对象来连接数据库,而连接池就 ...

随机推荐

  1. Linux学习20200215

  2. 强制浏览器以IE8版本运行

    做为一个开发人员,经常被要求前端页面兼容ie8及以上,所以有时候我们希望ie默认以ie8的版本打开我们的页面. 1.“文档模式”: 在html页面中加入类似下面的代码: <meta http-e ...

  3. nodejs(10)express路由

    后端路由 前端请求的URL地址,都要对应一个后端的处理函数,那么 这种URL地址到 处理函数之间的对应关系,就叫做后端路由: 在Express中,路由的主要职责 就是 把客户端的请求,分发到对应的处理 ...

  4. 【每日Scrum】第二天冲刺

    一.计划会议内容 确定细化了每日任务 二.任务看板 三.scrum讨论照片 四.产品的状态 无 五.任务燃尽图  

  5. pip速度慢解决办法

    pip速度慢解决办法 sudo pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 注意加不加sudo是 ...

  6. Django2.0——请求与响应(上)

    客户端与服务段通过http协议进行数据的传输,而http协议是一种双向单工的,且主动发起连接的只有客户端.故数据的传送就离不开请求和响应,客户端每发起一个请求,服务端就是返回一个响应.在django的 ...

  7. 题解【[BJOI2012]算不出的等式】

    题目背景emmm \[\text{首先特判掉p=q时的情况(ans = }p^2-1\text{)}\] \[\text{构造函数}f(k) = \left\lfloor \frac{kq}{p}\r ...

  8. css3 flex布局详解

    原文链接: http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool https://www.cnblog ...

  9. yum无法安装nginx,报错内容为1:nginx-1.14.2-1.el7_4.ngx.x86_64: [Errno 5] [Errno 2] 没有那个文件或目录

    yum命令安装nginx时报错:1:nginx-1.14.2-1.el7_4.ngx.x86_64: [Errno 5] [Errno 2] 没有那个文件或目录 一.问题原因:Python版本的问题 ...

  10. HashMap源码分析(一)

    基于JDK1.7 HashMap源码分析 概述 HashMap是存放键值对的集合,数据结构如下: table被称为桶,大小(capacity)始终为2的幂,当发生扩容时,map容量扩大为两倍 Hash ...