• <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://www.newhan.cn/zhishi/a/1677733756101773.html

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

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

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

            標簽:轉換器   網名   在線   qq
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 亚洲VA欧美VA国产综合| 亚洲色偷偷偷综合网| 一本一道久久久a久久久精品91| 亚洲国产精品免费一区| 人妻熟女一区二区aⅴ千叶宁真| 中国女人内谢69xxxx免费视频| 日本视频精品一区二区| 天堂va在线高清一区| 国产成人免费午夜在线观看| 自拍第一区视频在线观看| 日本另类αv欧美另类aⅴ| 97人妻免费碰视频碰免| 樱花草在线社区WWW韩国| 福利视频在线播放| 国产睡熟迷奷系列网站| 亚洲天堂久久一区av| 免费视频一区二区三区亚洲激情| 男女啪啪高潮激烈免费版| 中文字幕日韩精品亚洲七区| 亚洲精品精华液| 亚洲国产aⅴ综合网| 亚洲 日韩 国产 制服 在线| 久久综合开心激情五月天| 国产人妻大战黑人第1集| 亚洲天堂激情av在线| 亚洲一区二区三区十八禁| 人妻一区二区三区三区| 粗壮挺进邻居人妻无码| 痉挛高潮喷水av无码免费| 中文字幕日韩人妻高清在线| 免费观看18禁黄网站| 黑人糟蹋人妻hd中文字幕| 无码一区二区三区久久精品| 男人天堂亚洲天堂女人天堂 | 全免费A级毛片免费看无码| 亚洲av无码久久精品色欲| 精品无码国模私拍视频| 人人妻人人澡人人爽| 午夜国产精品福利一二| 中文字幕无线码中文字幕| 黄页网站在线观看免费视频|