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 ...
随机推荐
- WPF datagrid 动态增加列
DataGrid动态增加列 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.m ...
- 20145223《Java程序程序设计》实验一实验报告
实验一 Java开发环境的熟悉(Windows + IDE) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用IDE 编辑.编译.运行.调试Java程序. 实验步骤 (一)命令行下Ja ...
- CSS3-给网页添加图片
给网页添加图片: 1.background-attachment: scroll--------随文本一块滚动 ; background-attachment: fixed-----固定在一个位置上 ...
- API
20145217 <Java程序设计>第八周学习总结 教材学习内容总结 本章主要讲输入与输出. 15.1日志API 1.java.util.logging包提供了日志功能相关类与接口,使用 ...
- 【转载】Android内存泄露
相信一步步走过来的Android从业者,每个人都会遇到OOM的情况.如何避免和防范OOM的出现,对于每一个程序员来说确实是一门必不可少的能力.今天我们就谈谈在Android平台下内存的管理之道,开始今 ...
- poj2612Mine Sweeper
很简单的模拟题目,但在队内赛的时候一直WA了10发...我ca 题目没看懂,也不算,就是我以为摸到地雷他会标星(*) ,但其实还是(x),T_T #include <cstdio> #in ...
- gulp plugins 插件介绍
目录 [−] gulp API gulp.src(globs[, options]) gulp.dest(path[, options]) gulp.task(name[, deps], fn) gu ...
- BZOJ1082: [SCOI2005]栅栏 题解
题目大意: 有一些木材,可以没有浪费地将一根木材分成几块木板(比如长度为10的木板可以切成长度为8和2的两块木板).现在你希望得到一些长度的木板,问通过分割木材最多能得到几块想要的木板. 思路: 首先 ...
- ACM 一种排序
一种排序 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长.宽都是整数 ...
- ACM 关于521
关于521 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 Acm队的流年对数学的研究不是很透彻,但是固执的他还是想一头扎进去. 浏览网页的流年忽然看到了网上有人用玫 ...