文档章节

JDBC直接读取properties,连接数据库的util类

S三少S
 S三少S
发布于 05/20 16:24
字数 441
阅读 14
收藏 1

完整代码如下:拼凑的代码,源代码不知道从哪来的了。见谅!
使用的话直接在自己的service或dao注入

package com.javafast.util;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.javafast.common.config.Global;
import com.javafast.common.utils.PropertiesLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/*
 * @Desc druid连接池
 * @Author lisha 2019/5/6 0006 13:37
 */
@Component
public class DBPoolConnection {

    private static final Logger log = LoggerFactory.getLogger(DBPoolConnection.class);
    private static DBPoolConnection dbPoolConnection = null;
    private static DruidDataSource druidDataSource = null;
    private static String DB_PROPERTIES = "db_server.properties";

    static {
        // 属性文件加载对象
        PropertiesLoader loader = new PropertiesLoader(DB_PROPERTIES);
        try {
            // DruidDataSrouce工厂模式
            druidDataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(loader.getProperties());
        } catch (Exception e) {
            log.error("获取配置失败");
        }
    }

    /**
     * 数据库连接池单例
     * @return
     */
    public static synchronized DBPoolConnection getInstance(){
        if (null == dbPoolConnection){
            dbPoolConnection = new DBPoolConnection();
        }
        return dbPoolConnection;
    }

    /**
     * 返回druid数据库连接
     * @return
     * @throws SQLException
     */
    public DruidPooledConnection getConnection() throws SQLException {
        return druidDataSource.getConnection();
    }

    /**
     * 返回druid数据库连接
     * @return
     * @throws SQLException
     */
    public synchronized void closeConnection(Connection conn){
        try {
            if (conn != null){
                conn.close();
            }
            log.info("关闭数据库连接成功");
        } catch (SQLException e) {
            e.printStackTrace();
            log.error("关闭数据库连接失败");
        }
    }
    /**
     * @param string 配置文件名
     * @return Properties对象
     */
    private static Properties loadPropertiesFile(String fullFile) {
        String webRootPath = null;
        if (null == fullFile || fullFile.equals("")){
            throw new IllegalArgumentException("Properties file path can not be null" + fullFile);
        }
        webRootPath = DBPoolConnection.class.getClassLoader().getResource("").getPath();
        webRootPath = new File(webRootPath).getParent();
        InputStream inputStream = null;
        Properties p =null;
        try {
            inputStream = new FileInputStream(new File(webRootPath + File.separator + fullFile));
            p = new Properties();
            p.load(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != inputStream){
                    inputStream.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        return p;
    }

}

直接使用如下:

   @Autowired
    private DBPoolConnection connectionPool;
	
	
	 public boolean selectStoreIsExistById(String id){
        String sql = " select  count(*) allCount  from store where id = " + id;
        Connection conn = null;
        boolean flag = false;
        try {
            conn = connectionPool.getConnection();
            ResultSet rs = conn.prepareStatement(sql).executeQuery();
            int total = -1;
            if (rs != null) {
                rs.next();
                total = rs.getInt("allCount");
            }

            if (total > 0) {
                flag = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error("查询供应商信息");
            logger.error("sql:" + sql);
        } finally {
            connectionPool.closeConnection(conn);
        }
        return flag;
    }

© 著作权归作者所有

S三少S
粉丝 9
博文 76
码字总数 26364
作品 0
海淀
私信 提问
连接池详解,c3p0与dbcp的区别!

连接池: 连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。这项技术能明显提高对数据库操作的性能。 连接池的好处: (1)对于大多数应用程序,当它们正...

IT_laobai
2018/06/20
0
0
从读取properties文件说开去,浅谈web容器中类加载器

今天刚好有人让我写个通过读取properties连接数据库的小demo. 汗啊,普通项目中可以使用的文件读取,在web项目中总报空指针异常. 查阅了资料明白,赶紧记录下来,希望遇到此类问题的童鞋能引起重...

jeffsui
2012/10/31
0
10
JDBC 获取 Oracle 数据库连接(使用 Driver)

获取数据库连接的方法: 1. Driver 接口: •Java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现 •在程序中不需要...

passionfly
2014/11/17
0
0
基于MyBatis3.0.6的基本操作介绍

每 一 个 MyBatis 的 应 用 程 序 都 以 一 个 SqlSessionFactory 对 象 的 实 例 为 核 心 。SqlSessionFactory本身是由SqlSessionFactoryBuilder创建的,一般而言,在一个应用中,一个数据...

JAVA_NINA
2015/04/21
0
0
基于MyBatis3.0.6的基本操作介绍

每 一 个 MyBatis 的 应 用 程 序 都 以 一 个 SqlSessionFactory 对 象 的 实 例 为 核 心 。SqlSessionFactory本身是由SqlSessionFactoryBuilder创建的,一般而言,在一个应用中,一个数据...

玄空
2012/09/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux scp命令

Linux scp命令 Linux 命令大全 Linux scp命令用于Linux之间复制文件和目录。 scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。 语法 scp [-1246BCpqrv] ...

linjin200
10分钟前
0
0
Echoin获得ZB Captial战略投资

Echoin获得ZB Captial战略投资

怎当她临去时秋波那一转
10分钟前
0
0
Jenkins 持续集成综合实战

Jenkins 持续集成综合实战 发表于 2017-01-06 文章目录 1 安装 Jenkins 1.1 安装 JDK/Maven 1.2 安装 Jenkins 1.2.1 离线安装 1.2.2 在线安装 1.2.3 基于 Tomcat 安装 1.2.4 免安装方式 1.3 ...

linzhuangrong
11分钟前
0
0
自动编码(AE)器的简单实现

一.目录 自动编码(AE)器的简单实现 一.目录 二.自动编码器的发展简述 2.1 自动编码器(Auto-Encoders,AE) 2.2 降噪自编码(Denoising Auto-Encoders, DAE)(2008) 2.3 堆叠降燥自动编码器 (Sta...

zhaowei121
15分钟前
0
0
十分良心!全网最详细的Java 自动内存管理机制及性能优化教程

先来个思维导图预览一下本文结构。 一图带你看完本文 一、运行时数据区域 首先来看看Java虚拟机所管理的内存包括哪些区域,就像我们要了解一个房子,我们得先知道这个房子大体构造。根据《J...

戎码益深
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部