首页 > 其他分享 >字典映射简单方法

字典映射简单方法

时间:2024-07-15 15:53:47浏览次数:11  
标签:dictType dictFieldName String 映射 dictField param 简单 字典

 

 

通过反射简单设置字典,不用每个需要用字典的地方都重新写一遍

 

/**
* @param dictType 字典type
* @param dictField 字典type对应字段名
* @param dictFieldName 需要填充中文的字段名
* @param <T>
*/
<T> void setDictName(T obj, String dictType, String dictField,String dictFieldName);

 

/**
* @param dictType 字典type
* @param dictField 字典type对应字段名
* @param dictFieldName 需要填充中文的字段名
* @param <T>
*/
@Override
public <T> void setDictName(T obj, String dictType, String dictField,String dictFieldName) {
try{
if (obj != null){
LambdaQueryWrapper<SysDictData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysDictData::getDictType,dictType);
queryWrapper.eq(SysDictData::getStatus,"0");
Field field = obj.getClass().getDeclaredField(dictField);
Field fieldName = obj.getClass().getDeclaredField(dictFieldName);
fieldName.setAccessible(true);
field.setAccessible(true);
String fieldValue = field.get(obj).toString();
queryWrapper.eq(SysDictData::getDictValue,fieldValue);
List<SysDictData> sysDictData = this.selectDictDataByType(dictType);
SysDictData one = sysDictData.stream()
.filter(data -> "0".equals(data.getStatus()) && fieldValue.equals(data.getDictValue()))
.findFirst()
.orElse(null);
if (one != null){
fieldName.set(obj,one.getDictLabel());
}
}
}catch (Exception e){
log.error("字典映射错误,请联系管理员");
throw new RuntimeException("字典映射错误,请联系管理员");
}

}

 

代码结合到业务表的 大概意思差不多

 

下面是list版本的

 

/**
*
* @param list 数据list
* @param dictType 字典type
* @param dictField 字典type对应字段名
* @param dictFieldName 需要填充中文的字段名
* @param <T>
*/
@Override
public <T> void setDictNameByList(List<T> list, String dictType, String dictField,String dictFieldName) {
try{
if (!CollectionUtils.isEmpty(list)){
List<SysDictData> sysDictData = this.selectDictDataByType(dictType);
List<SysDictData> dicts = sysDictData.stream().filter(data->"0".equals(data.getStatus())).collect(Collectors.toList());
Map<String, SysDictData> collect = dicts.stream().collect(Collectors.toMap(SysDictData::getDictValue, e -> e));
for (T t : list) {
Field field = t.getClass().getDeclaredField(dictField);
Field fieldName = t.getClass().getDeclaredField(dictFieldName);
fieldName.setAccessible(true);
field.setAccessible(true);
if (collect.containsKey(field.get(t).toString())){
fieldName.set(t,collect.get(field.get(t).toString()).getDictLabel());
}
}
}
} catch (Exception e){
log.error("字典映射错误,请联系管理员");
throw new RuntimeException(e.getMessage());
}
}

 

标签:dictType,dictFieldName,String,映射,dictField,param,简单,字典
From: https://www.cnblogs.com/bawanglong168/p/18303311

相关文章

  • 《探索 Python 字典的奥秘》
    在Python中,字典(Dictionary)是一种非常强大和灵活的数据结构。它以键值对(Key-ValuePair)的形式存储数据,类似于现实生活中的字典,通过查找单词(键)来获取其释义(值)。一、字典的定义字典可以使用花括号 {} 来创建,键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔,dict 作为......
  • 简单的小波分析入门教程(第一部分,Python)
    importnumpyasnpimportmatplotlib.pyplotaspltimportpywtSimpleSignalAnalysisusingDWT#Generatethesignalt=np.linspace(0,1,1000,endpoint=False)signal=np.cos(2.0*np.pi*7*t)+np.sin(2.0*np.pi*13*t)#ApplyDWTcoeffs=p......
  • AI学习 | 概念解释 + Scikit-learn 的简单情况
    一些机器学习概念解释点击查看代码*机器学习:是AI的一个子集,不用人类显式编程,让计算机通过算法自行学习和改进*监督学习:有数据、有标签,告诉机器什么是什么,让机器来学习输入和输出的映射关系。比如:分类和回归(预测)*非监督学习:有数据没有标签,让机器自己寻找规律。比如:聚类......
  • 数据结构第28节 字典树
    字典树(Trie,也称前缀树)是一种用于存储字符串的树形数据结构。它将字符串中的字符作为树的边,每个节点代表一个可能的前缀。字典树非常适合处理大量字符串的搜索、插入和删除操作,尤其是在查找具有相同前缀的字符串时非常高效。基本概念:根节点:通常不包含任何数据,它的子节点包......
  • 【原创软件】第7期:文件夹生成器V1.0-按照列表批量生成文件夹,简单小巧
    一、背景因为工作需要,需要批量创建文件夹。为了省去人工创建时间,使用aardio制作了一个软件。  二、功能演示  三、下载地址 https://www.123pan.com/s/9Rn9-1xppH.html  四、源代码 源代码分享:importwin.ui;importfsys;importfsys.dlgimportproce......
  • 2. CMake 的简单使用
    2.CMake的简单使用我们创建一个工程目录,在里面定义一些简单的加减乘除运算,然后定义一个main.cpp的文件:结构如下:tree/f.\D:\SOURCE\CMAKE_PROJ└─proj1add.cppCMakeLists.txtdiv.cpphead.hmain.cppmul.cpp......
  • 【Python】 深入了解 Python 字典的 | 更新操作
    我白天是个搞笑废物表演不在乎夜晚变成忧伤怪物撕扯着孤独我曾经是个感性动物小心地感触现在变成无关人物                     ......
  • 【简单介绍下K-means聚类算法】
    ......
  • 字典树(Tire树)
    字典树(Tire树)字典树是一种多叉树,又称为前缀树。核心思想是利用字符串的公共前缀。字典树的根节点为空,从根节点到某一节点路径上的字符连接起来构成字符串,完整的字符串在链上而非结点上,一个节点的所有子节点都具有相同公共前缀。普通Tire树structnode{boolend;......
  • Python 字典(Dict)详解与实战应用
    目录前言一、字典的定义和创建1.使用花括号定义2.使用dict()函数创建二、字典的三种遍历方式方式1:遍历字典的键,通过键获取值 dict.keys()方式2:遍历字典的值,但不能通过值获取键dict.values()方式3:最常用的方法:直接获取键值对 dict.items()三、字典的常见操作1.添......