spring配置数据源

spring配置数据源

  • 1. 什么是数据源连接池
  • 2. 手动创建数据源(c3p0,druid)
    • 2.1 导入数据库连接驱动,数据源pom坐标
    • 2.2 创建数据源
    • 2.3 配置jdbc.properties, 解耦拿到数据源
  • 3. spring配置数据源
    • 3.1 bean方式创建数据源1
    • 3.2 bean方式创建数据源2
  • 4. 测试spring数据源连接

  • oracle数据库测试用
  • ojdbc6, oracle11.2版本
select * from v$version

1. 什么是数据源连接池

  • 数据源连接池
  1. 用jdbc操作数据库时,会连接数据库,会产生一个数据库连接
  2. 使用第三方jar包,连接数据库时,数据库连接池,会产生多个数据库连接给你使用
  3. 数据源连接池对连接进行管理,需要进行数据库操作时,给出空闲连接
    数据源连接池
  • 数据源(连接池)的作用

    1. 提高程序性能
    2. 事先实例化数据源,初始化部分连接资源
    3. 使用连接资源时从数据源中获取
    4. 使用完毕后将连接资源归还给数据源
  • 常用的数据源连接池

阿里druid
springboot默认连接池 hikaricp

2. 手动创建数据源(c3p0,druid)

2.1 导入数据库连接驱动,数据源pom坐标

        <dependency><groupId>com.oracle.database.jdbc</groupId><!-- 导入Oracle的数据库驱动 --><artifactId>ojdbc6</artifactId><version>11.2.0.4</version></dependency><dependency> <!-- hibernate 数据库连接池--><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><dependency> <!-- Alibaba数据库连接池 --><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency>

2.2 创建数据源

  • 同jdbc拿到数据库连接操作类型,需要数据库驱动,数据库地址,账号,密码
    // 测试手动创建c3p0public void test1() {//ComboPooledDataSource dataSource = new ComboPooledDataSource();Connection conn = null;try {dataSource.setDriverClass("oracle.jdbc.OracleDriver");dataSource.setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl");dataSource.setUser("scott");dataSource.setPassword("scott");conn = dataSource.getConnection();System.out.println(conn);} catch (PropertyVetoException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {try {if (conn != null)conn.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}// 测试手动创建 druidpublic void test2() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName("oracle.jdbc.OracleDriver");dataSource.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl");dataSource.setUsername("scott");dataSource.setPassword("scott");DruidPooledConnection conn = null;try {conn = dataSource.getConnection();System.out.println(conn);} catch (SQLException throwables) {throwables.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}}

2.3 配置jdbc.properties, 解耦拿到数据源

  • 配置信息
jdbc.driver=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
jdbc.userName=scott
jdbc.userPassword=scott
  • 读取配置文件连接数据源
   // 配置文件保存jdbc的信息public void test3() {// 利用resourceBundle类解析配置文件ResourceBundle rb = ResourceBundle.getBundle("jdbc");String driver = rb.getString("jdbc.driver");String url = rb.getString("jdbc.url");String userName = rb.getString("jdbc.userName");String userPassword = rb.getString("jdbc.userPassword");// 创建durid 对象DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(userName);dataSource.setPassword(userPassword);DruidPooledConnection conn = null;try {conn = dataSource.getConnection();System.out.println(conn);} catch (SQLException throwables) {throwables.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}}

3. spring配置数据源

3.1 bean方式创建数据源1

  • 添加pom依赖
        <dependency> <!-- 导入spring坐标 --><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.10.RELEASE</version></dependency>
  • 创建spring配置文件
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="oracle.jdbc.OracleDriver"/><property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/><property name="username" value="scott"/><property name="password" value="scott"/></bean>
  • spring拿到数据源
    // spring 容器产生数据源对象 druidpublic void test4() {ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");DruidDataSource ds = (DruidDataSource) app.getBean("dataSource");DruidPooledConnection connection = null;try {connection = ds.getConnection();System.out.println("connection is connected..." + connection);System.out.println(ds);} catch (SQLException throwables) {throwables.printStackTrace();} finally {try {if (connection != null)connection.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}

3.2 bean方式创建数据源2

  • 使用spring-context 读取jdbc.properties带有连接数据库地址账号密码的文件
  • 引入context命名空间和约束路径
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd

  • 使用属性加载器读取配置文件
    <!-- 引入spring-context命名空间 和 约束空间 --><context:property-placeholder location="classpath:jdbc.properties"/><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.userName}" /><property name="password" value="${jdbc.userPassword}" /></bean>

4. 测试spring数据源连接

connection is connected...oracle.jdbc.driver.T4CConnection@137b2b07
{CreateTime:"2020-07-19 14:40:13",ActiveCount:1,PoolingCount:0,CreateCount:1,DestroyCount:0,CloseCount:0,ConnectCount:1,Connections:[]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于mxnet的Regression问题Kaggle比赛代码框架

一、概述 书中3.16节扩展一下可以作为kaggle比赛的框架&#xff0c;这个赛题的名字是House Prices: Advanced Regression Techniques&#xff0c;是一个Regression问题。 二、Deeplearning的一般流程 结合李航《统计学习方法》中对机器学习流程的总结&#xff0c;分为data、…

centos8安装

一. 下载centos centos下载 下载镜像版 mini版本 二&#xff0c;安装centos8 虚拟机安装 可 打开虚拟机安装centos 选择下载的镜像 配置磁盘大小 配置资源 配置虚拟机内存&#xff0c;处理器个数等. 安装成功后&#xff0c;也可配置

alert,confirm和prompt

1.警告消息框alertalert 方法有一个参数&#xff0c;即希望对用户显示的文本字符串。该字符串不是 HTML 格式。该消息框提供了一个“确定”按钮让用户关闭该消息框&#xff0c;并且该消息框是模式对话框&#xff0c;也就是说&#xff0c;用户必须先关闭该消息框然后才能继续进行…

(一)卷积网络之基础要点

一、提出问题 对于生活生产中的表格数据&#xff0c;至多也就上百维&#xff0c;而且表格数据的行与行之间没有序列和位置上的关系&#xff0c;所以用传统的机器学习算法就可轻松的解决这些问题。但是到了图片数据&#xff0c;传统机器学习就非常吃力了&#xff0c;一个普通的…

Windows Phone本地数据库(SQLCE):3、[table]attribute(翻译) (转)

这是“windows phone mango本地数据库&#xff08;sqlce&#xff09;”系列短片文章的第三篇。 为了让你开始在Windows Phone Mango中使用数据库&#xff0c;这一系列短片文章将覆盖所有你需要知道的知识点。这个时候我将谈谈有关你使用windows phone mango本地数据库时使用[ta…

Java代理模式——静态代理动态代理

proxy mode1. 什么是代理1.1 例子解释1.2 作用2. 静态代理2.1 优缺点分析2.2 以厂家卖u盘用代码说明3. 动态代理3.1 什么是动态代理3.2 jdk实现原理3.3 代码描述1. 什么是代理 1.1 例子解释 1. 生活中的例子&#xff0c;常见的商家卖东西&#xff0c; 商家就是代理&#xff0…

一、Insertion sort

1. 问题 2. 算法 2.1 伪代码 2.2 算法思想 2.3 手工演示 2.4 Python实现 《算法导论》一书数组默认从111开始&#xff0c;这种方式适合算法分析&#xff0c;从000开始适合程序实现&#xff0c;为了能和伪代码一致便于对比&#xff0c;后边所有的Python实现中数组均从111开始。…

windows 2502 2503 错误解决

1. 错误原因 1. c盘下temp文件夹权限问题 2. c盘temp文件夹环境变量配置错误&#xff0c;或者更改了2. 造成的问题 每次安装msi文件或者卸载msi程序包时&#xff0c;都会弹出此恶心的错误...3. 解决 1. 针对问题一&#xff0c;解决&#xff0c;以管理员身份安装或者卸载 win…

Hibernate学习笔记

Hibernate是什么&#xff1a; Hibernate 架构&#xff1a; 下载、安装、必要的 jar包、环境CLASSPAST的设置&#xff08;此步骤省略&#xff09; Hibernate框架的使用步骤&#xff1a;1、创建Hibernate的配置文件&#xff08;hibernate.cfg.xml&#xff09;2、创建持久化类&…

二、Merge sort

1 问题 2 算法 2.1 伪代码 2.2 算法思想 2.3 手工演示 2.4 Python实现 # -*- coding: utf-8 -*- import sysdef merge(A, p, q, r):n1 q - p 1n2 r - qL [0] * (n1 2)R [0] * (n2 2)for i in range(1, n11):L[i] A[pi-1]for j in range(1, n21):R[j] A[qj]L[n11] 6…

cglib实现动态代理

对目标方法实现前置或者后置增强&#xff0c; 是在程序动态运行时加入增强方法的。 1. 目标类 package com.lovely.proxy.cglib;/*** 目标类* author echo lovely* date 2020/7/26 15:20*/ public class Target {public void save() {System.out.println("sve running..…

fragment嵌套,viewpager嵌套 不能正确显示

转帖&#xff1a;http://blog.csdn.net/mybook1122/article/details/24003343 通常为 viewPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentsList)); 替换为 mPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), fra…

三、递归树分析法

1 问题 2 解决思路 使用递归树猜想一个上界&#xff0c;使用归纳法证明上界也是下界。 2.1 使用递归树&#xff08;recursion tree&#xff09;猜想结论&#xff08;不严谨&#xff09; 使用递归树两点&#xff1a;1⃣️逐行展开&#xff1b;2⃣️逐行相加&#xff1b; 逐行…

Linux文件查看/编辑方法介绍

转载:https://www.centos.bz/2011/10/linux-file-view-edit/ cat 命令介绍 cat 命令的原含义为连接(concatenate)&#xff0c; 用于连接多个文件内容并输出到标准输出流中&#xff08;标准输出流默认为屏幕&#xff09;。实际运用过程中&#xff0c;我们常使用它来显示文件内容…

html5input表单标签新属性

初探h5一&#xff0c;h5 新增表单类型二&#xff0c;新增表单属性三&#xff0c;code demo一&#xff0c;h5 新增表单类型 •email 邮箱地址•url 网络地址•number 数字框•range 滑块•Date pickers (date, month, week, time, datetime, datetime-local) 日期时间框•search…

关于java的JIT知识

1.JIT的工作原理图 工作原理 当JIT编译启用时&#xff08;默认是启用的&#xff09;&#xff0c;JVM读入.class文件解释后&#xff0c;将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码。 通常javac将程序源码编译&#xff0c;转换成java字节码&#xff0c;JVM通过解释…