package com.vcredit.ddcash.batch.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.log4j.Logger;

import com.vcredit.ddcash.batch.model.entity.ModuleConfigEntity;

/**
* 读取数据库管理的配置
*
* @author xutao
*/
public class DBConfigReader {
private static final Logger LOGGER = Logger.getLogger(DBConfigReader.class);
/**
* 数据库连接
*/
private static Connection connection = null;

private static final String CONFIG_QUERY_SQL = "SELECT ID id,CONFIG_NAME configName,CONFIG_DESC configDesc,CONFIG_VALUE configValue,PID pid,REMARK remark,DELETE_FLAG deleteFlag,CREATED_DATE createdDate,UPDATED_DATE updatedDate FROM t_ddq_module_config WHERE CONFIG_NAME = ? AND DELETE_FLAG = '0'";

static {
initConnection();
}

/**
* 初始化数据库连接
*/
private static void initConnection() {
if (connection == null) {
connection = DBHelper.getConnection();
LOGGER.info("初始化数据库连接完成");
}
}

/**
* 根据配置名查找配置值
*
* @param param_configName
* @return
*/
public static String getValueByName(String param_configName) {
LOGGER.info("RequestParam:" + param_configName);
initConnection();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = connection.prepareStatement(CONFIG_QUERY_SQL);
ps.setString(1, param_configName);
rs = ps.executeQuery();
rs.next();
ModuleConfigEntity result = getResultEntity(rs);
String value = result.getConfigValue();
LOGGER.info("配置名: 【" + param_configName + "】 ===> 配置值 【" + value + "】 ");
return value;
} catch (SQLException e) {
LOGGER.error("请求配置【" + param_configName + "】时发生异常!", e);
} finally {
DBHelper.closeAll(null, ps, rs);
}
return null;
}

/**
* 关闭数据库连接
*/
public static void closeConnection() {
try {
if (null != connection) {
connection.close();
}
LOGGER.info("DBConfigReader的connection被关闭!");
} catch (SQLException e) {
LOGGER.error("关闭DBConfigReader的connection时发生异常!", e);
}
}

/**
* 设置结果对象
*
* @param rs
* @return
* @throws SQLException
*/
private static ModuleConfigEntity getResultEntity(ResultSet rs) throws SQLException {
ModuleConfigEntity resultEntity = new ModuleConfigEntity();
resultEntity.setId(rs.getLong("id"));
resultEntity.setConfigName(rs.getString("configName"));
resultEntity.setConfigDesc(rs.getString("configDesc"));
resultEntity.setConfigValue(rs.getString("configValue"));
resultEntity.setpId(rs.getLong("pid"));
resultEntity.setRemark(rs.getString("remark"));
resultEntity.setDeleteFlag(rs.getString("deleteFlag"));
resultEntity.setCreatedDate(rs.getString("createdDate"));
resultEntity.setUpdatedDate(rs.getString("updatedDate"));
return resultEntity;
}
}

DBConfigReader.java的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

随机推荐

  1. HDU 3461 Code Lock(并查集)

    很好的一个题,思想特别6 题意:给你小写字母个数n,每个字母可以向上翻动,例如:d->c,a->z.然后给你m对数(L,R)(L<=R),表示[L,R]之间可以同时向上翻动,且翻动后 ...

  2. AOP静态代理解析1-标签解析

    AOP静态代理使用示例见Spring的LoadTimeWeaver(代码织入) Instrumentation使用示例见java.lang.instrument使用 AOP的静态代理主要是在虚拟机启动 ...

  3. hdu3535 背包大杂汇

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3535 //不想写题解,这道题让我对背包的理解更深了,我相信我不会忘记的.... 代码: # ...

  4. mac OS X操作 -- 常用

    显示/隐藏默认隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true/false 重置ROOT密码: http://www. ...

  5. Qt-note0906

    1.在Qt中每一个类都有一个与其同名的头文件: 2.任何一个Qt GUI程序都要有一个QApplication对象: 3.在默认情况下,新建的可视部件对象都是不可见的,要使用show()函数让它们显示 ...

  6. 餐厅app总结

    2.总结:在这几个月来说,我们发现我们能力有点不足,整一个app,没有我们想象的那么完美,所以经过我们的讨论说,我们还是需要去加强一下每一个人的能力,但是整个作业,每个人都是尽了每个人的能力. (1) ...

  7. Codeforces Round #342 (Div. 2)

    贪心 A - Guest From the Past 先买塑料和先买玻璃两者取最大值 #include <bits/stdc++.h> typedef long long ll; int ...

  8. Javascript-jQuery【1】-用promise()实现html()回调函数

    $('#divId').html(someText).promise().done(function(){ //your callback logic / code here });

  9. linux 安装eclipse 和cdt

    这个东西说起来简单,但是经历了无数次到失败,终于还是安装完成了. 最早到时候我下载了eclipse和cdt让后安装,安装完成以后,无法运行和编译程序 后来我学到了一个牛逼的命令yum 这个命令会帮助我 ...

  10. hadoop datanode 挂机恢复后,多复制的块删除的问题

    发现: 如果到namenode,用start-all.sh启动datanode,则会删除该datanode上所有的数据 到datanode上用hadoop-daemon.sh start datano ...