--最佳实践配置(.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. jquery散记

    感觉jquery的用法都要忘没了,简单捡一下 1.window.onload与$(document).ready的区别 ()编写个数 window.onload = function(){} //不能 ...

  2. Gym - 101142C CodeCoder vs TopForces(搜索)

    题意:给定n个人在两个网站上的得分,一个人若能在任意一个网站里战胜另一个人,则认为这个人能战胜那个人.问每个人都能战胜多少人. 分析: 1.战胜具有传递性. 例如: 4 5 2 7 3 3 因为第三个 ...

  3. JavaEE--JNDI(下,实现)

    参考:https://blog.csdn.net/ouyida3/article/details/46699023  https://www.landui.com/help/show-6158.htm ...

  4. Vue动态添加v-model绑定及获取其返回数据

    从数据库拿到的动态数据绑定到页面对应的v-model或者v-bind上,并且根据对页的操作获取到返回的值: 1.首先在data里定义一个数据 timeTip 为一个空数组 data () { retu ...

  5. Navicat for Mysql 11.2 的下载,安装与激活

    1. Navicat for Mysql 11.2 的下载 链接:https://pan.baidu.com/s/1w54F-MYTLuy4TQwpzUE7bQ       密码:zsfu 2.下载的 ...

  6. VMware Workstation 12 PRo密钥

    注意:手动输入(起初复制输入,一个都没成功,不要偷懒哦) VMware Workstation 12序列号: 5A02H-AU243-TZJ49-GTC7K-3C61N

  7. Django1.11模型类数据库操作

    django模型类数据库操作 数据库操作 添加数据 1,创建类对象,属性赋值添加 book= BookInfo(name='jack',pub_date='2010-1-1') book.save() ...

  8. ubuntu---【NVIDIA驱动 + CUDA 安装】不成功时的卸载方式

    NVIDIA驱动 与 CUDA 安装不成功时,可以卸载,检查相关问题(配置.兼容性等),重新安装.这里记录一下,卸载方式.

  9. psmisc

    https://packages.ubuntu.com/xenial/psmisc Package: psmisc (22.21-2.1build1) Other Packages Related t ...

  10. 编程作业2.1:Logistic regression

    题目 在这部分的练习中,你将建立一个逻辑回归模型来预测一个学生是否能进入大学.假设你是一所大学的行政管理人员,你想根据两门考试的结果,来决定每个申请人是否被录取.你有以前申请人的历史数据,可以将其用作 ...