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 blocklogger.info("error is: " + e.getMessage());} catch (IllegalAccessException e) {// TODO Auto-generated catch blocklogger.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 ...
随机推荐
- 在Eclipse中开发C/C++项目
摘要:通过本文你将获得如何在Eclipse平台上开发C/C++项目的总体认识.虽然Eclipse主要被用来开发Java项目,但它的框架使得它很容易实现对其他开发语言的支持.在这篇文章里,你将学会如何使 ...
- 如何高效的阅读hadoop源代码?
个人谈谈阅读hadoop源代码的经验. 首先,不得不说,hadoop发展到现在这个阶段,代码已经变得非常庞大臃肿,如果你直接阅读最新版本的源代码,难度比较大,需要足够的耐心和时间,所以,如果你觉得认真 ...
- WIFI物联网平台微信端开发分享
本文由企鹅圈原创成员Hunter_Zhu贡献. 本篇文章是基于近期一个项目微信端开发过程的一个总结.文中主要介绍了云智易平台下微信端开发的流程.该平台提供的主要功能以及此次H5开发使用到的一些UI组件 ...
- php计算经纬度间的距离
<?php //根据经纬度计算距离 function getdistance($lng1,$lat1,$lng2,$lat2) { //将角度转为狐度 $radLat1=deg2rad($lat ...
- 马老师 Linux基础入门
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线.地址总线和控制总线,分别用来传输数据.数据地址和控 ...
- HTML5 API—无刷新更新地址 history.pushState/replaceState方法(例子) (转)
尽管是上面讲到的<JavaScript高级程序设计>(第二版)中提到,BOM中的location.path/query…… (window.location)在通过JavaScript更改 ...
- 移动对meta的定义(转)
以下是meta每个属性详解 尤其要注意的是content里多个属性的设置一定要用分号+空格来隔开,如果不规范将不会起作用. 一.<meta http-equiv="Content-Ty ...
- RabbitMQ消息队列(六):使用主题进行消息分发[转]
在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统.Consumer可以监听不同severity(严重级别)的log.但是,这也是它之所以叫做简单日志 ...
- 【php】基础学习4
这部分主要包括php面向对象的程序设计,具体如下: <html xmlns=http://www.w3.org/1999/xhtml> <head> <meta http ...
- 自己定义View学习之12/7(进度条之混合模式)
今天重点内容是我们学习自己定义view里面的混合模式.事实上我们的画布就跟photoshop一样.是个图层关系,一层盖着一层.这样就导致有非常多种覆盖模式,这就是我们今天的主题."混合模式& ...