• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            qq網名轉換器(qq網名轉換器在線轉換器)

            更新時間:2023-03-02 13:09:16 閱讀: 評論:0

            背景

            結果數據轉換:

            1. 場景:數據庫表存儲關聯表的ID,如創建人ID、機構ID、部門ID等,而前端展示需要的是名稱。為了展示,正常是通過關聯表查詢名稱解決,但這樣可能導致查詢執行效率低下、SQL復雜化,而且還要定義名稱字段來存儲名稱

            2. 策略:數據庫表還是存儲關聯表的ID,但字段類型定義為字符串類型(為了代碼生成器生成String類型的字段)。rvice層對外提供的統一為ID查詢結果,若有展示需要,則在controller通過DataConverter統一轉換為名稱返回前端展示

            3. 查詢結果對象為POJO(DTOVOENTITY),若定義了名稱字段(名稱字段需以Name結尾,如urId-》urName,org-》orgName),則通過反射將名稱存儲在Name字段,若未定義名稱字段,則直接覆蓋ID字段。

            4. 查詢結果對象為Map,則會新增一個名稱字段(名稱字段需以Name結尾,如urId-》urName,org-》orgName),名稱存儲在名稱字段,不會覆蓋ID字段

            5. DataConverter中調用關聯表的服務查詢名稱并做緩存提供轉換效率

            調用方法

            // 轉換分頁對象數據DataConverter.toName(DataType.USER_NICK_NAME, page);// 轉換單個對象DataConverter.toName(DataType.USER_NICK_NAME, obj);// 轉換集合對象DataConverter.toName(DataType.USER_NICK_NAME, list);

            其中,DataType為支持的數據類型(具體見源碼)。若默認的轉換字段不滿足,臨時要用的請調用如下代碼,比較公用的字段請聯系管理員添加到數據類型配置中。

            數據字典轉換

            sql查詢語句,需在待轉換字典值前加字典編碼,例子如下(其中yes_no,ur_type為字典編碼):

            lect concat('yes_no','-',t.status),concat('ur_type','-',t.type) from ur t

            轉換調用,例子如下(其中status、type為待轉換的字段):

            DataConverter.toName(DataType.YAOXIE_DICT_ITEM,"status","type");具體實現

            DataConverter:結果數據轉換器

            package com.shusi.convertor;import cn.hutool.core.util.ReflectUtil;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.shusi.domain.dto.OptionDTO;import com.shusi.redis.RedisUtil;import com.shusi.util.DataUtil;import com.shusi.util.SpringContextHolder;import com.shusi.util.StrUtil;import lombok.extern.slf4j.Slf4j;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;/** * 結果數據轉換器 * * @Author: lincl * @Date: 2019/2/28 16:11 */@Slf4jpublic class DataConverter { /** * 最多緩存多少 */ private final static int MAX_SIZE = 10000; /** * redis */ private static RedisUtil redisUtil; /** * 初始化 */ public static void init() { // 初始化獲取bean if (redisUtil == null) { redisUtil = SpringContextHolder.getBean(RedisUtil.class); } } /** * 獲取名稱 * * @param dataType * @param id * @return */ public static String getName(DataType dataType, String id) { // 初始化 init(); List<String> idList = StrUtil.split(id, ','); // 查詢結果 List<String> result = redisUtil.getItemListOfMap(dataType.getCachePrefix(), idList); // 如果請求服務后,依舊沒有數據,則返回id if (result == null) { return id; } return StrUtil.join(",", result); } /** * 更新緩存 * * @param dataType 數據類型 * @param list 數據集合 */ public static void tName(DataType dataType, List<OptionDTO> list) { // 初始化 init(); Map<String, String> map = new HashMap<>(list.size()); for (OptionDTO item : list) { map.put(item.getValue(), item.getLabel()); } // 更新緩存 redisUtil.tMap(dataType.getCachePrefix(), map); log.info("“ {} ” 緩存設置成功!共 {} 個數據!", dataType.getType(), list.size()); } /** * 更新名稱 * * @param dataType 數據類型 * @param id id * @param name 名稱 */ public static void updName(DataType dataType, String id, String name) { // 初始化 init(); // 更新緩存 redisUtil.tItemOfMap(dataType.getCachePrefix(), id, name); } /** * 刪除名稱 * * @param dataType 數據類型 * @param ids ids */ public static void delName(DataType dataType, String... ids) { // 初始化 init(); redisUtil.delItemOfMap(dataType.getCachePrefix(), Arrays.asList(ids)); } /** * 單個對象轉換 * * @param dataType 數據類型 * @param obj 數據對象 * @param <T> * @return */ public static <T> T toName(DataType dataType, T obj) { return DataConverter.toName(dataType, obj, null); } /** * 集合轉換 * * @param list 數據集合 * @param <T> * @return */ public static <T> List<T> toName(DataType dataType, List<T> list) { return DataConverter.toName(dataType, list, null); } /** * 分頁對象轉換 * * @param page * @return */ public static Page toName(DataType dataType, Page page) { return DataConverter.toName(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 (DataUtil.isEmpty(fieldNames)) { fieldNames = dataType.getFieldNames(); } if (DataUtil.isNotEmpty(fieldNames)) { for (int i = 0; i < fieldNames.length; i++) { String fieldName = fieldNames[i]; // 存儲名稱的字段名 String labelField = fieldName.replace("Id", "") + "Name"; try { //Map對象 if (obj instanceof Map) { if (((Map) obj).get(fieldName) != null) { String urId = ((Map) obj).get(fieldName) + ""; String nickName = DataConverter.getName(dataType, urId); ((Map) obj).put(labelField, nickName); } } el { Class clz = obj.getClass(); if (ReflectUtil.hasField(clz, fieldName)) { String id = (String) ReflectUtil.getFieldValue(obj, fieldName); if (StrUtil.isNotBlank(id)) { String nickName = DataConverter.getName(dataType, id); if (ReflectUtil.hasField(clz, labelField)) { // 定義了額外的字段來存儲名稱 ReflectUtil.tFieldValue(obj, labelField, nickName); } el { ReflectUtil.tFieldValue(obj, fieldName, nickName); } } } } } catch (Exception e) { log.error(e.getMessage(), 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 && list.size() > 0) { for (int i = 0; i < list.size(); i++) { DataConverter.toName(dataType, list.get(i), fieldNames); } } return list; } /** * 分頁對象轉換 * * @param page * @param fieldNames 字段名稱 * @return */ public static Page toName(DataType dataType, Page page, String[] fieldNames) { if (page.getRecords() != null && page.getRecords().size() > 0) { DataConverter.toName(dataType, page.getRecords(), fieldNames); } return page; }}

            DataType:數據類型

            package com.shusi.convertor;/** * 數據類型枚舉類 * * @author lincl */public enum DataType { /** * 用戶賬號昵稱,默認轉換字段:"createBy", "updateBy", "operator", "orderUrId", "pushUrId" */ USER_NICK_NAME("用戶賬號昵稱", "urId", "createBy", "updateBy", "operator", "orderUrId", "pushUrId", "returnUrId", "optionUrId", "ndUrId", "receiveUrId", "receiveUrIds"), /** * 機構名稱,默認轉換字段:"orgId", "hospitalOrgId" */ ORG_NAME("機構名稱", "orgId","reqOrgId", "urBuyerId", "urSupplierId"), /** * 廠家名稱,默認轉換字段:"factoryId" */ FACTORY_NAME("廠家名稱", "factoryId", "factory", "urFactoryId"), /** * 部門名稱,默認轉換字段:"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) { this.type = type; this.fieldNames = fieldNames; } /** * 獲取數據類型 * * @return */ public String getType() { return type; } /** * 獲取默認轉換字段 * * @return */ public String[] getFieldNames() { return fieldNames; } /** * 獲取緩存前綴 * * @return */ public String getCachePrefix() { return "ID_NAME:" + this.name(); }}

            本文發布于:2023-02-28 21:11:00,感謝您對本站的認可!

            本文鏈接:http://m.newhan.cn/zhishi/a/1677733756101773.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:qq網名轉換器(qq網名轉換器在線轉換器).doc

            本文 PDF 下載地址:qq網名轉換器(qq網名轉換器在線轉換器).pdf

            標簽:轉換器   網名   在線   qq
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 欧美奶涨边摸边做爰视频| 欧美丰满少妇xxxx性| 久久综合色一综合色88欧美| 国产二级一片内射视频插放| 亚洲一区二区精品久久蜜桃| 色花堂国产精品首页第一页| 亚洲人成人网色www| 亚洲欧美综合精品成| 久久精品人妻少妇一区二| 18禁免费无码无遮挡不卡网站| 日本深夜福利在线观看| 亚洲国产一区二区三区,| 国产精品理论片在线观看| 亚洲av第一区二区三区| 18禁超污无遮挡无码网址| 日韩精品国产二区三区| 亚洲av一般男女在线| 亚洲bt欧美bt精品| 无码国内精品人妻少妇| 熟女视频一区二区三区嫩草 | 国产男女猛烈无遮挡免费视频网址| 美女黄网站视频免费视频| 一炕四女被窝交换啪啪| 日韩欧美aⅴ综合网站发布| 精品综合一区二区三区四区| 日韩国产精品无码一区二区三区| 欧美大胆老熟妇乱子伦视频| 欧美黑人性暴力猛交喷水| 桃花岛亚洲成在人线AV| 少妇人妻在线视频| 一本久道久久综合久久鬼色| a级亚洲片精品久久久久久久| 天天爽天天摸天天碰| 97精品人妻系列无码人妻| 丰满少妇熟女高潮流白浆| 一卡2卡三卡4卡免费网站| 国产AV无码专区亚洲AV潘金链| 亚洲国产超清无码专区| 二区中文字幕在线观看| 亚洲色拍拍噜噜噜最新网站| 国产免费踩踏调教视频|