首页 java实战 java反射的应用省市区赋值问题

java反射的应用省市区赋值问题

前天搞了下省市区 发现不是存省市区就是存省市区的code值 而前端一般只有存code或者中文 很少两个值并存, 本来vu…

前天搞了下省市区

发现不是存省市区就是存省市区的code值

而前端一般只有存code或者中文

很少两个值并存,

本来vue接触的少

(自己的前端水平也是喳喳的存在)

萌生了写个后台工具类想法

实现目标

code能够转成对应的中文省市区

中文省市区能够转化code

因为尽量要写的通用化一点

所以所有有关于省市区的类都要能够调用

想到这里,我突然发现好像反射里面有这个东西

就简单的写了个工具类

首先

先准备两个map

1.key 是code value是 省市区

350000:福建省,351000某某市,351001某某区键值对

java反射的应用省市区赋值问题

2.key 是(省份默认是0)父级id+省市区 value是code

//0福建省350000,350000某某市351000,351000某某区351001键值对

java反射的应用省市区赋值问题

然后主要代码,主要是分两种

/**

* 设置省市区code 或者设置

* @param obj 需要设置省市区的实体

* @param map 需要翻译的map值

* @param type 需要执行的类型

* @return

*/

public static void setAddress(Object obj, Map<String,String> map, String type){

Class c = obj.getClass();

/*

* 2.获取方法 名称和参数列表来决定 getMethod获取的是public的方法 getDelcaredMethod自己声明的方法

*/

try {

//code 转 省份

if(DictConstant.NUM_ONE.equals(type)){

Method mProvince = c.getMethod(“getProvince” );

Object oProvince = mProvince.invoke(obj);

Method mProvinceName = c.getMethod(“setProvinceName”, String.class);

if(oProvince!=null){

mProvinceName.invoke(obj,map.get(oProvince.toString()));

}

Method mCity = c.getMethod(“getProvince” );

Object oCity = mCity.invoke(obj);

Method mCityName = c.getMethod(“setProvinceName”, String.class);

if(oCity!=null){

mCityName.invoke(obj,map.get(oCity.toString()));

}

Method mArea = c.getMethod(“getProvince” );

Object oArea= mArea.invoke(obj);

Method mAreaName = c.getMethod(“setProvinceName”, String.class);

if(oArea!=null){

mAreaName.invoke(obj,map.get(oArea.toString()));

}

}

// 省份转 code

if(DictConstant.NUM_TWO.equals(type)){

Method mProvince = c.getMethod(“getProvinceName” );

Object oProvince = mProvince.invoke(obj);

Method mProvinceCode = c.getMethod(“setProvince”, String.class);

String provinceCode=map.get(DictConstant.NUM_ZERO +oProvince.toString());

if(oProvince!=null){

mProvinceCode.invoke(obj,provinceCode);

}

Method mCity = c.getMethod(“getCityName” );

Object oCity = mCity.invoke(obj);

Method mCityName = c.getMethod(“setCity”, String.class);

String cityCode=map.get(provinceCode+oCity.toString());

if(oCity!=null){

mCityName.invoke(obj,cityCode);

}

Method mArea = c.getMethod(“getAreaName” );

Object oArea= mArea.invoke(obj);

Method mAreaName = c.getMethod(“setArea”, String.class);

String areaCode=map.get(cityCode+oArea.toString());

if(oArea!=null){

mAreaName.invoke(obj,areaCode);

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

调用方法

AddressUtil.setAddress(sysUserDetatil,ConfigConstant.ADDRESS_NAME_MAP,DictConstant.NUM_TWO);

大概就是这么回事

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

mysql 统计日期 今天,昨天,上个月,这个月 ,一年

mysql 统计日期 今天,昨天,上个月,这个月 ,一年

查询5分钟前的数据 select * from table where end_date between date_ad...
Illegal key size or default parameters

Illegal key size or default parameters

简介: java中使用AES对称加密后,请求报错: Caused by: java.lang.RuntimeExcept...
nginx跨域问题

nginx跨域问题

add_header Access-Control-Allow-Origin *; add_header Access-...
Ajax请求发送成功但不进success的解决方法

Ajax请求发送成功但不进success的解决方法

dataType:’Text’ 格式严格按照服务端返回的数据来
【java】post请求参数全大写后台接不到参数

【java】post请求参数全大写后台接不到参数

测试验证的时候发现,接收不到请求参数   驼峰正常 springMVC使用的是Jackson来解析json格式的请求报文...
返回顶部