首页 > 个性签名 正文
【网名转换器】ID-NAME结果数据转换器

时间:2023-02-08 18:05:07 阅读: 评论: 作者:佚名

背景

转换结果数据:

1.方案:数据库表存储关系表的ID,如作者ID、机构ID、部门ID等,前面显示需要名称。通常通过关系表查询名称来解决,但这可能会导致查询执行效率低下和SQL复杂性,您可以定义名称字段来存储名称。

2.策略:数据库表存储关联表的ID,但字段类型定义为字符串类型(为代码生成器生成字符串类型字段)。服务层向外部提供的统一是身份查询结果,如果需要展示,controller将通过DataConverter转换为名称,并返回前端演示文稿

3.如果查询结果对象是POJO(DTO\VO\ENTITY)并定义了名称字段(名称字段必须以Name结尾,如userid-"userName,org-" orgName)

4.如果查询结果对象是Map,则会添加“名称”字段(名称字段必须以Name结尾,例如userID-"username,org-" org Name),名称存储在“名称”字段中,并且不会复盖“ID”字段。

5.DataConverter调用并缓存关系表中的服务查询名称,从而提供转换效率

调用方法

//转换分页对象数据

Da,第页);

//转换单个对象

Da、obj);

//集合对象转换

Da,名单);其中DataType是支持的数据类型(请参阅源代码)。如果对默认转换字段不满意,请临时调用以下代码;要比较公用字段,请要求管理员将它们添加到数据类型配置中。

数据预转换

在要转换的字典值之前添加字典编码的SQL查询语句。例如:其中yes_no、user_type是字典编码。

Select concat ('yes _ no ''-'t.status),concat ('user _ type ''-'t.tatus)

DA;“状态”、“类型”);具体实现

DataConverter:生成的数据转换器

Package com

Importcn。

import com . baomidou . myba;

Import com。

Import com。

Import com。

Import com。

Import com。

Import lombok.ex

Import java.u

Import java.u

Import java.u

Import java.u

/* *

*结果数据转换器

*

* @Author: lincl

* @ date3360 2019/2/28 16336011

*/

@Slf4j

Public class DataConverter {

/* *

*最大缓存数

*/

private final static int max _ size=10000;

/* *

* redis

*/

private static redis util redis util;

/* *

*初始化

*/

Public static void init() {

//初始化导入bean

If (redisUtil==null) {

RedisUtil=S);

}

}

/* *

*抽取名称

*

* @param dataType

* @param id

* @return

*/

public static string getname(datatype datatype,string id) {

//初始化

init();

ListString idList=S(id,'');

//查询结果

ListString result=redi(),id list);

//请求服务后,如果没有数据,则返回id

If (result==null) {

Return id

}

Return S(''re)

sult); } /** * 更新缓存 * * @param dataType 数据类型 * @param list 数据集合 */ public static void setName(DataType dataType, List<OptionDTO> list) { // 初始化 init(); Map<String, String> map = new HashMap<>()); for (OptionDTO item : list) { map.pu(), i()); } // 更新缓存 redi(), map); log.info("“ {} ” 缓存设置成功!共 {} 个数据!", da(), li()); } /** * 更新名称 * * @param dataType 数据类型 * @param id id * @param name 名称 */ public static void updName(DataType dataType, String id, String name) { // 初始化 init(); // 更新缓存 redi(), id, name); } /** * 删除名称 * * @param dataType 数据类型 * @param ids ids */ public static void delName(DataType dataType, String... ids) { // 初始化 init(); redi(), Arrays.asList(ids)); } /** * 单个对象转换 * * @param dataType 数据类型 * @param obj 数据对象 * @param <T> * @return */ public static <T> T toName(DataType dataType, T obj) { return Da(dataType, obj, null); } /** * 集合转换 * * @param list 数据集合 * @param <T> * @return */ public static <T> List<T> toName(DataType dataType, List<T> list) { return Da(dataType, list, null); } /** * 分页对象转换 * * @param page * @return */ public static Page toName(DataType dataType, Page page) { return Da(dataType, page, null); } /** * 单个对象转换 * * @param dataType 数据类型 * @param obj 数据对象 * @param fieldNames 转换字段名称 * @param <T> * @return */ public static <T> T toName(DataType dataType, T obj, String[] fieldNames) { if (obj == null) { return null; } // 默认转换字段 if (fieldNames)) { fieldNames = da(); } if (fieldNames)) { for (int i = 0; i < ; i++) { String fieldName = fieldNames[i]; // 存储名称的字段名 String labelField = ("Id", "") + "Name"; try { //Map对象 if (obj instanceof Map) { if (((Map) obj).get(fieldName) != null) { String userId = ((Map) obj).get(fieldName) + ""; String nickName = Da(dataType, userId); ((Map) obj).put(labelField, nickName); } } else { Class clz = obj.getClass(); if (clz, fieldName)) { String id = (String) Re(obj, fieldName); if (id)) { String nickName = Da(dataType, id); if (clz, labelField)) { // 定义了额外的字段来存储名称 Re(obj, labelField, nickName); } else { Re(obj, fieldName, nickName); } } } } } catch (Exception e) { log.error(), e); } } } return obj; } /** * 集合转换 * * @param list 数据集合 * @param fieldNames 字段名称 * @param <T> * @return */ public static <T> List<T> toName(DataType dataType, List<T> list, String[] fieldNames) { if (list != null && li() > 0) { for (int i = 0; i < li(); i++) { Da(dataType, li(i), fieldNames); } } return list; } /** * 分页对象转换 * * @param page * @param fieldNames 字段名称 * @return */ public static Page toName(DataType dataType, Page page, String[] fieldNames) { if () != null && ().size() > 0) { Da(dataType, (), fieldNames); } return page; } }

DataType:数据类型

package com.; /** * 数据类型枚举类 * * @author lincl */ public enum DataType { /** * 用户账号昵称,默认转换字段:"createBy", "updateBy", "operator", "orderUserId", "pushUserId" */ USER_NICK_NAME("用户账号昵称", "userId", "createBy", "updateBy", "operator", "orderUserId", "pushUserId", "returnUserId", "optionUserId", "sendUserId", "receiveUserId", "receiveUserIds"), /** * 机构名称,默认转换字段:"orgId", "hospitalOrgId" */ ORG_NAME("机构名称", "orgId","reqOrgId", "userBuyerId", "userSupplierId"), /** * 厂家名称,默认转换字段:"factoryId" */ FACTORY_NAME("厂家名称", "factoryId", "factory", "userFactoryId"), /** * 部门名称,默认转换字段:"deptId" */ DEPT_NAME("部门名称", "deptId", "departmentId"), /** * 部门合并名称,默认转换字段:"deptMergeId" */ DEPT_MERGE_NAME("部门合并名称", "deptMergeId", "deptId", "departmentId"), /** * 行政区域名称 */ REGION_NAME("行政区域名称", "province", "city", "district", "region", "provinceId", "cityId", "districtId"), /** * 药械网:数据字典 */ YAOXIE_DICT_ITEM("数据字典", null), /** * 统一认证:数据字典 */ AUTH_DICT_ITEM("数据字典", null), /** * 权限名称 */ PERMISSION("权限名称", "permissionId"); /** * 类型 */ private String type; /** * 默认转换字段 */ private String[] fieldNames; DataType(String type, String... fieldNames) { = type; = fieldNames; } /** * 获取数据类型 * * @return */ public String getType() { return type; } /** * 获取默认转换字段 * * @return */ public String[] getFieldNames() { return fieldNames; } /** * 获取缓存前缀 * * @return */ public String getCachePrefix() { return "ID_NAME:" + (); } }
  • 评论列表

发表评论: