java 从数据库取值反射给变量
<bean name="webstartup" class="com.dadi.oa.system.WebStartUp" init-method="init" singleton="true">
<property name="dao"><ref bean="simpleDao"/></property>
</bean>
public void init() {
logger.info("====== init system'info begin =====");
initConstants();
initHardwareInfo();
initUser();
initDepartment();
initAppType();
initPosition();
initReviewersInfo();
//加载系统的权限信息
initAuthModule();
initAuthRole();
initAuthUserUtil();
initAuthMenuUtil();
initAnthIP();
logger.info("====== init system'info begin =====");
}
public void initConstants(){
logger.info("====== init Constants'info begin =====");
try {
List dList = (ArrayList<Map>) dao.getMapList(
" select a.constantsname as constants, a.developvalue as develop, a.mockvalue as mock, a.releasevalue as release from Constants a where a.deletedflag='0'", -1,1);
ConstantsUtil.initConstants(dList);
} catch (RuntimeException e) {
logger.error("init() ConstantsUtil.Constants_Map error:" + e);
throw new ServiceException(e.getMessage());
}
logger.info("====== init Constants'info begin =====");
}
/**
* 初始化系统变量
* @param list 数据库中读取的所有集合
*/
public static void initConstants(List list){
if(list != null && list.size() > 0){
logger.info("env : " + env);
Constants.envflag = env; //环境标识
/** 初始化Map */
Constants_Map = null;
Constants_Map = Collections.synchronizedMap(new HashMap<String, String>());
/** 遍历传入的List,并写入Map中 */
int len = list.size();
for(int i = 0; i < len; i++){
Map map = (Map)list.get(i);
Constants_Map.put(map.get(cname).toString(), map.get(env).toString());
}
/** 通过反射机制,把Map中的值赋给对应的成员变量 */
Class cclass = ConstantsUtil.class;
Field[] fields = cclass.getFields();
int flen = fields.length;
try {
/** 遍历所有的静态成员变量,根据其类型,把从Map中取到的值进行类型转换 */
for(int i = 0; i < flen; i++){
String value = Constants_Map.get(fields[i].getName());
if(value != null){
String ftype = fields[i].getType().getName(); /** 获取静态成员的数据类型 */
if(ftype.equals("java.lang.String")){
fields[i].set(cclass, value);
}
if(ftype.equals("java.lang.Integer") || ftype.equals("int")){
fields[i].set(cclass, Integer.parseInt(value));
}
if(ftype.equals("java.lang.Boolean") || ftype.equals("boolean")){
fields[i].set(cclass, Boolean.parseBoolean(value));
}
if(ftype.equals("java.lang.Long") || ftype.equals("long")){
fields[i].set(cclass, Long.parseLong(value));
}
logger.info(fields[i].getName() + " : " + ftype + " : " + value);
}
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
logger.info("error is: " + e.getMessage());
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
logger.info("error is: " + e.getMessage());
}
}


java 从数据库取值反射给变量的更多相关文章
- locust参数化(数据库取值)
locust参数化(数据库取值) 基于上一篇参数化的梳理,本篇用另一种方法从数据库中取出这100个用户来登录 思路:在 TaskSet 中的 on_start 方法表示执行任务前的操作,可以将数据库取 ...
- django-models 数据库取值
django.shortcuts import render,HttpResponse from app01.models import * # Create your views here. def ...
- java数据类型,取值范围,引用类型解析
与javascript不同,Java是强类型语言,在定义变量前需要声明数据类型.主要分两种数据类型:基本数据类型和引用数据类型. 1.基本数据类型分析: 基本数据类型 数值型 整数型 byte字节 ...
- java基本数据类型取值范围
在JAVA中一共有八种基本数据类型,他们分别是 byte.short.int.long.float.double.char.boolean 整型 其中byte.short.int.long都是表示整数 ...
- 关于模板中的动态取值 ---反射与javascript脚本编译
在项目中经常遇到一个问题,打印word或者打印excel的时候,我们经常使用一对一的赋值或者批量替换的方式来对模板进行修改. 但是现在遇到两种场景: 1.取值是通过自定以方法进行取值的. 如:一个销售 ...
- java的map取值
第一种方法根据键值的名字取值 import java.util.HashMap; import java.util.Map; /** * @param args */ public stat ...
- 跟着太白老师学python day10 名称空间,作用域和取值顺序,变量的加载顺序
名称空间分为3种: 1. 全局名称空间 2. 内置名称空间 3. 局部名称空间(临时) 作用域 全局作用域 1全局名称空间 2 内置名称空间 局部作用域 ...
- java中byte取值范围为什么是 -128到127
概念:java中用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数.正数补码为其本身:负数补码为其绝对值各位取反加1:例如:+21,其二进制表示形式是000101 ...
- 与Mysqli相关的四种数据库取值
<!--取值方案一:通过数字数组 fetch_row()--><meta http-equiv="Content-Type" content="text ...
随机推荐
- 〖Linux〗zigbee实验之cc2430移植tinyos2.x的步骤(Ubuntu13.10)
开发环境:Ubuntu13.10 1. 添加源,并安装tinyos-2.11:sudo gedit /etc/apt/sources.list #往里边添加deb http://tinyos.sta ...
- Codeforces554C:Kyoya and Colored Balls(组合数学+费马小定理)
Kyoya Ootori has a bag with n colored balls that are colored with k different colors. The colors are ...
- spring mvc上传、下载的实现
下载 //下载 @RequestMapping(value="/download") public ResponseEntity<byte[]> download() ...
- leetcode719:直线上的第k近点对
问题描述 给定数组a[N],可以确定C(N,2)个点对,也就确定了C(N,2)个距离,求这些距离中第k小的距离(k<C(N,2)). 思路 看到第k小.第k大这种问题,首先想到二分法. 把求值问 ...
- linux常见面试题及答案
1. 在Linux系统中,以文件方式访问设备. 2. Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统. 3. Linux文件系统中每个文件用i字节来标识. 4. 全部磁盘块由四 ...
- 马哥 Linux运维基础进阶和shell入门
地址:http://edu.51cto.com/course/course_id-618.html 紧接马哥linux专题 第一讲 Bash变量: 1byte= -128,127 2bytes -32 ...
- Socket详解-Linux Socket编程(不限Linux)
“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览 ...
- Jmeter -----计数器(counter)
计数器的定义 Allows the user to create a counter that can be referenced anywhere in the Thread Group. The ...
- 用HTTP协议传输媒体文件 学习
用HTTP协议传输媒体文件可以分两个阶段,第一个阶段是Progressive Download(渐进式下载方式)阶段,第二个阶段是HTTP streaming(HTTP流化)阶段.其中,第一个阶段可以 ...
- RHEL7 - 从命令行管理文件
RHEL中重要的目录 位置 用途 /usr 安装的软件.共享的库,包括文件和静态只读程序数据.重要的子目录有: -/usr/bin:用户命令 -/usr/sbin:系统管理命令 -/usr/local ...