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 ...
随机推荐
- 开发Portlet第三步:如何在Crystal Portlet中调用远程服务?
当基于测试数据的Portlet调试完成后,接下来就是引入远程服务,替换测试数据. (此处以Dubbo框架远程服务为例) 分步指南 删除测试数据依赖:在pom.xml文件中,删除对****-servic ...
- 点击 Run 之后发生了什么?
这是我以前去链家网面试的一个题目,当时回答不够全面,现在看了2016 WWDC以及Sunnyxx iDev大会的分享之后,感觉对这个问题有了一些简单的认识,就来总结下.如果大家有补充,麻烦评论下哦! ...
- HBase Shell 常见操作
1.一般操作 status 查看状态 version 查看HBase版本 2.DDL操作 create 'member','member_id','address','info' 创建了一个membe ...
- JavaScript 全局对象
全局属性和函数可用于所有内建的 JavaScript 对象. 顶层函数(全局函数) 函数 描述 decodeURI() 解码某个编码的 URI. decodeURIComponent() 解码一个编码 ...
- ural 1070. Local Time
1070. Local Time Time limit: 1.0 secondMemory limit: 64 MB Soon the USU team will go to Vancouver to ...
- 【原】iOS学习之Swift之语法2(精简版)
1.可选类型和强制解包(?和!) 1> 可选类型(?)和强制解包(!) 在swift中,可选类型(?) 其根源是一个 枚举型,里面有 None 和 Some 两种类型.其实所谓的 nil 就是 ...
- iOS学习26之UINavigationController
1. UINavigationController 1> 概述 UINavigationController : 导航控制器, 是 iOS 中最常用的多视图控制器之一, 用它来管理多个视图控制器 ...
- OpenResty 简单编写一个Module
使用 Lua module 来进行 Lua 代码的复用是推荐的做法.然后在用户代码中直接用require()来调用 module代码: local myTest = {} function myTes ...
- UIView 的属性opaque详解
该属性用法决定与该消息的接受者是否让其视图透明. 该属性的用处在于:给绘图系统提供一个性能优化开关. 当该值设计为YES,那么绘图系统会把它当作不透明看待,那么在执行绘图的时候会优化绘图一些操作,并且 ...
- HDU-I Hate It
Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写 ...