DBConfigReader.java
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的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
随机推荐
- C# 生成随机数
private static char[] constant = { ', 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p ...
- Android如何缩减APK包大小
代码 保持良好的编程习惯,不要重复或者不用的代码,谨慎添加libs,移除使用不到的libs. 使用proguard混淆代码,它会对不用的代码做优化,并且混淆后也能够减少安装包的大小. native c ...
- 移动网页 -- CSS布局
1.多栏结构 column-count column-width column:120px 3: column-gap:2em: column-rule:2px dotted gray: 跨越以及打断 ...
- virtualtree 的使用(Delphi)
VirtualTreeview的强大,毋庸置疑,不过,你能给演示演示,也不错,就是刚下来,只有一个可执行程序,感觉像病毒. 最近比较忙,没有上网,现在把我研究的结果和大家通报下,方便新手学习,避免走弯 ...
- MACD 基本用法
基本用法 1. MACD 金叉:DIFF 由下向上突破 DEA,为买入信号. 2. MACD 死叉:DIFF 由上向下突破 DEA,为卖出信号. 3. MACD 绿转红:MACD 值由负变正,市场由空 ...
- web工程spring+ibatis单元测试
web工程spring+ibatis在本地做单元测试,用例如下: package wanghongye; import org.junit.Before; import org.junit.Test; ...
- 【原】iOS学习之PCH文件
1. PCH文件概述 PCH文件是一种预编译头文件(一般扩展名为.PCH),是把一个工程中较稳定的代码预先编译好放在一个文件(.PCH)里.这些预先编译好的代码可以是任何的C/C++代码--甚至可以是 ...
- 【HDU3652】B-number 数位DP
B-number Problem Description A wqb-number, or B-number for short, is a non-negative integer whose de ...
- 关于vim插件
本人比较喜欢amix它集成了很多插件. 1.mru.vim:用于打开最近使用过的文件 使用命令: :MRU 打开最近的文件列表 上下箭头可以移动关标 :o 在新窗口中打开文件 2.NERD T ...
- Codeforces Round #228 (Div. 2) B. Fox and Cross
#include <iostream> #include <string> #include <vector> #include <algorithm> ...