精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一招教你解決頁面中關聯id的轉換

開發 前端
依賴于數據緩存,一般針對通用數據才有數據轉換的需要,比如用戶、部門數據等,一般這些數據更適合緩存。

在工作中,我們經常有這樣的業務情況,實體間通過id實現數據業務上的關聯,比如訂單和用戶,訂單的創建人id、商品id等,在頁面查詢時我們需要將對應的id信息轉換成對應的中文描述,比如用戶中文名稱,商品中文名稱等。如果是單條數據的展示還好,但是設計到列表查詢,如何高效、優雅地實現這個效果呢?

現在接口返回的數據基本都是JSON格式,比如spring中使用了jackson,在controller層對結果進行json序列化,而我們要做的就是在序列化的過程中,實現id的轉換。

使用方式

定義實體轉換接口

由于需要對訂單實體中的創建人id進行轉換:

public interface UserConvert {

    String USER_CACHE = "USER_CACHE";

    String userId();

    default ConvertItem getUserConvert(){
        if( userId() == null ){
            return null;
        }
        return new ConvertItem(userId(), USER_CACHE);
    }

}

定義接口轉換適配器

基于上面UserConvert的處理,基于緩存實現,同時支持一個實體中多個,比如商品名稱、商品分類等!

public class UserConvertProvider extends CacheItemConvertAdapter {

    private static String name = UserConvert.USER_CACHE;

    public UserConvertProvider() {
        super(name, User.class);
    }

    @Override
    public boolean support(ConvertItem convertItem) {
        return convertItem != null && convertItem.getName().equals(name);
    }

    @Override
    public String convert(ConvertItem convertItem) {
        if( convertItem == null ){
            return null;
        }
        User user = (User) fromCache(convertItem.getId());
        return user != null ? user.getCaption() : null;
    }
}

需要轉換的數據緩存

該實現依賴緩存,需要優先對需要轉換的數據進行緩存,因此示例中添加了緩存示例:

public void init(){
    Cache cache = cacheManager.getCache(UserConvert.USER_CACHE);
    if( cache != null ){
        cache.put("u1", new User("u1","Tom"));
    }
}

實體定義

實體中需要通過實現接口UserConvert,這樣對多個數據項轉換時可以繼續擴展。

public class Order implements UserConvert {

    private String id;

    private String name;

    private LocalDateTime createTime = LocalDateTime.now();

    /**
     * 創建用戶
     */
    private String creator;

    @Override
    public String userId() {
        return creator;
    }
}

實現效果

可以看到,在輸出json中,多了一列userConvert,也就是接口中定義的get*方法:

{
    "id": "1",
    "name": "測試訂單",
    "createTime": "2024-05-08T21:55:51.5747507",
    "creator": "u1",
    "userConvert": "Tom"
}

實現原理

上面說的,主要實現基于緩存,在web查詢結果進行json序列化時,依賴于jackson的擴展,對輸出結果匹配的類型進行轉換。

@EnableCaching
@Configuration
public class JacksonCustomConfiguration{

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer(){
        return jacksonObjectMapperBuilder -> configureMapperBuilder(jacksonObjectMapperBuilder);
    }

    private void configureMapperBuilder(Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder) {
        jackson2ObjectMapperBuilder.serializers(convertSerializer());
    }

    @Bean
    public ItemConvertSerializer convertSerializer(){
        return new ItemConvertSerializer(ConvertItem.class);
    }
}
  1. 在配置文件中基于Jackson2ObjectMapperBuilderCustomizer對jackson進行擴展。
  2. 定義ItemConvertSerializer對ConvertItem類型的屬性進行處理,該類主要繼承于StdSerializer。
  3. 在ItemConvertSerializer中基于ConvertItem的name屬性來匹配對應的緩存并進行轉換。
  4. 注意開啟spring緩存*@EnableCaching*。
  5. 最后基于spring特性,定義*/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports*來實現自動注入配置。
  • ConvertItem示例:
@Getter
@Setter
public class ConvertItem {

    private String id;

    private String text;

    private String name;

    public ConvertItem() {

    }

    public ConvertItem(String id, String name) {
        this.id = id;
        this.name = name;
    }
}
  • ItemConvertAdapter擴展適配器,主要于ConvertItem搭配擴展。
public interface ItemConvertAdapter {

    /**
     * @param convertItem
     * @return
     */
    boolean support(ConvertItem convertItem);

    /**
     *
     * @param convertItem
     * @return
     */
    String convert(ConvertItem convertItem);

}
  • ItemConvertSerializer示例:
public class ItemConvertSerializer extends StdSerializer<ConvertItem> implements ApplicationContextAware {

    private List<ItemConvertAdapter> itemConvertAdapters;

    public ItemConvertSerializer(Class<ConvertItem> t) {
        super(t);
    }

    @Override
    public void serialize(ConvertItem value, JsonGenerator gen, SerializerProvider provider) throws IOException {
        String text = "";
        if(!CollectionUtils.isEmpty(itemConvertAdapters)){
            for (ItemConvertAdapter itemConvertAdapter : itemConvertAdapters) {
                if( itemConvertAdapter.support(value) ){
                    text = itemConvertAdapter.convert(value);
                    break;
                }
            }
        }
        gen.writeString(text);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        Map<String, ItemConvertAdapter> itemConvertAdapterMap
                = BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, ItemConvertAdapter.class, true, false);
        if( !itemConvertAdapterMap.isEmpty() ){
            itemConvertAdapters = new ArrayList<>(itemConvertAdapterMap.values());
            itemConvertAdapters.sort(OrderComparator.INSTANCE);
        }
    }
}

優缺點

  • 使用了jackson序列化的擴展,如果使用其他序列化工具,需要單獨支持。
  • 依賴于數據緩存,一般針對通用數據才有數據轉換的需要,比如用戶、部門數據等,一般這些數據更適合緩存。
責任編輯:武曉燕 來源: Java技術指北
相關推薦

2018-06-27 10:10:34

APP評分彈窗蘋果

2022-09-06 11:53:00

開發計算

2021-06-28 20:01:07

電腦性能Windows 7

2012-02-01 15:41:42

2020-09-16 06:08:10

Linux文本比對代碼

2011-05-03 11:13:51

黑盒

2020-06-22 14:18:02

運維架構技術

2021-07-06 07:21:17

橋接模式組合

2010-01-06 09:54:59

2020-11-03 16:36:36

Windows微軟彈窗

2022-06-21 09:27:01

PythonFlaskREST API

2020-10-20 08:01:30

MySQL密碼Windows

2023-12-18 08:24:09

LinuxPythonWord

2018-08-26 15:11:44

神經網絡機器學習對抗網絡

2022-02-06 00:02:43

Windows 11虛擬機微軟

2019-01-23 10:11:43

Python爬蟲IP

2018-10-10 14:34:27

ARM嵌入式系統硬件

2020-11-17 06:43:16

安卓智能手機移動應用

2022-02-17 17:19:31

鴻蒙語音識別語音播報

2013-07-30 11:24:33

SAP“簡化IT 一招
點贊
收藏

51CTO技術棧公眾號

亚洲欧洲韩国日本视频| 丝袜诱惑亚洲看片| 亚洲国产精品久久久久久| 国产av人人夜夜澡人人爽麻豆| 亚洲三级中文字幕| 毛片av一区二区| 欧美精品第一页在线播放| 我和岳m愉情xxxⅹ视频| 亚州欧美在线| 欧美日韩国产精品一区二区三区四区| 日韩一本精品| 亚洲福利在线观看视频| 日韩不卡一区二区| 欧美激情videos| 一级在线观看视频| 国产精品tv| 欧美日韩高清一区二区不卡| ww国产内射精品后入国产| 91在线品视觉盛宴免费| 国产成人aaaa| 国产精品网红直播| 国产无遮挡又黄又爽| 久久国产小视频| 亚洲精品自拍第一页| 永久看看免费大片| 成人在线高清| 欧美日韩中文字幕| 国产美女视频免费| 国产一二三区在线视频| 成人精品一区二区三区中文字幕| 国产拍精品一二三| 黄色片网站在线免费观看| 欧美午夜精品| 丝袜亚洲另类欧美重口| 色噜噜日韩精品欧美一区二区| 亚洲精品影片| 91精品国产综合久久蜜臀| 手机看片福利日韩| 成人av免费电影网站| 亚洲国产你懂的| 免费观看国产视频在线| 日本中文字幕电影在线免费观看| 久久人人超碰精品| 国产色综合一区二区三区| 99热这里只有精品99| 欧美a一区二区| 日韩美女在线观看一区| 丁香社区五月天| 欧美亚洲自偷自偷| 7777精品视频| 日本一区二区不卡在线| 在线不卡视频| 国内外成人免费激情在线视频网站| 精品欧美一区二区久久久久| 亚洲成人国产| 精品少妇v888av| 国产大学生自拍| 欧美精品色网| 久久久在线观看| 久久精品国产av一区二区三区| 欧美福利影院| 欧美激情xxxxx| 好吊操这里只有精品| 99精品国产在热久久| 78色国产精品| 亚洲av无码精品一区二区| 奇米色777欧美一区二区| 国产精品日韩专区| 国产精品视频久久久久久| 精品一区二区在线看| 91最新国产视频| 韩国中文字幕hd久久精品| aa级大片欧美| 日韩免费电影一区二区| 日本暖暖在线视频| 亚洲免费视频成人| 日本精品久久久久久久久久| av剧情在线观看| 欧美性猛交xxxx免费看久久久| 白嫩少妇丰满一区二区| 成人国产综合| 制服丝袜av成人在线看| 国产精品成人免费一区久久羞羞| 一本一道久久a久久| 亚洲毛片在线观看.| 嘿嘿视频在线观看| 欧美1区2区| 欧美一级大胆视频| 一区精品在线观看| 国产福利视频一区二区三区| 麻豆视频成人| 黄色成人影院| 高潮白浆女日韩av免费看| 天天操天天摸天天爽| www.欧美| 亚洲视频第一页| 污污的视频在线免费观看| 在线免费高清一区二区三区| 国产精品成人久久久久| 99久久免费国产精精品| 久久久影视传媒| 中国一级黄色录像| 男女羞羞在线观看| 欧美美女一区二区在线观看| 国产人妻黑人一区二区三区| 欧美gay男男猛男无套| 久久久欧美精品| 中文字幕乱码在线观看| av一区二区不卡| 一区二区三区四区国产| 天堂中文最新版在线中文| 91精品婷婷国产综合久久| 亚洲国产av一区| 好看的亚洲午夜视频在线| 国产经典一区二区| 蜜桃久久一区二区三区| 中文字幕中文乱码欧美一区二区| 欧美 日韩 亚洲 一区| 疯狂欧洲av久久成人av电影| 亚洲美女激情视频| 国产一级在线观看视频| 精久久久久久久久久久| 欧美一区二区综合| 9lporm自拍视频区在线| 91精品国产色综合久久不卡蜜臀| 日本精品在线观看视频| 国产一区白浆| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 美女国产一区二区| 看欧美日韩国产| 国产乱码在线| 日韩欧美中文字幕公布| 国产探花视频在线| 狂野欧美一区| 欧美极品jizzhd欧美| 成人免费图片免费观看| 日韩一区二区三区免费观看| 亚洲AV成人无码精电影在线| 久久精品国产一区二区三| 日韩伦理一区二区三区av在线| 天堂中文在线播放| 日韩高清中文字幕| 青青国产在线观看| 91在线小视频| 国产免费黄视频| 美女一区二区在线观看| 久久久久久久电影一区| 人人妻人人澡人人爽人人欧美一区| 亚洲精品中文在线影院| 国产老头和老头xxxx×| 欧美黄色免费| 99在线观看视频网站| 欧美女同一区| 亚洲高清色综合| 久久久久久久极品| 91免费国产在线| 男人操女人免费软件| 一区二区三区视频免费观看| 日韩av不卡电影| av播放在线观看| 欧美福利视频导航| 国产探花在线播放| 懂色一区二区三区免费观看| 9色porny| 中文字幕中文字幕精品| 国产精品国产自产拍高清av水多| а天堂8中文最新版在线官网| 欧美日韩一区二区三区在线| 视频国产一区二区| 国产成人综合亚洲网站| 国产欧美久久久久| 亚洲春色h网| 国产欧美一区二区三区在线看 | 精品国产一区二区三区四区| 国产精品女人久久久久久| 日本三级视频在线观看| 精品黑人一区二区三区久久| 99视频在线看| 国产精品成人免费精品自在线观看| 国产大片一区二区三区| 亚洲性图久久| 色女孩综合网| 视频精品一区| 日本aⅴ大伊香蕉精品视频| 9色在线视频网站| 日韩精品一区二区三区老鸭窝| 欧美国产成人精品一区二区三区| 国产精品久99| 在线免费观看成年人视频| 美国毛片一区二区三区| 日韩 欧美 视频| 日本欧美视频| 国产日韩欧美一区二区三区四区| 浪潮色综合久久天堂| 久久91亚洲人成电影网站| 日韩电影在线观看完整版| 欧美日韩国产123区| 亚欧视频在线观看| 国产精品美日韩| 亚洲成人av免费在线观看| 激情综合网激情| 怡红院av亚洲一区二区三区h| 欧美电影一区| 鲁片一区二区三区| 日韩中文字幕视频网| 国产成人亚洲综合| 波多野结衣在线高清| 在线视频中文亚洲| 天天综合天天综合| 欧美一区二区三区日韩| 日批视频免费观看| 欧美日韩日本国产| 欧美激情精品久久| 亚洲欧洲av另类| 少妇真人直播免费视频| 成人中文字幕电影| 中文字幕第一页在线视频| 亚洲在线黄色| 欧美深夜福利视频| 欧美黄色一区二区| 亚洲一区二区自拍偷拍| 国模吧精品视频| 蜜桃久久精品乱码一区二区| 深夜激情久久| 亚洲最大成人免费视频| 91麻豆精品一二三区在线| 日本免费久久高清视频| 爱看av在线| 欧美激情在线播放| 在线看一级片| 久久影院中文字幕| 欧美边添边摸边做边爱免费| 亚洲最新中文字幕| 你懂的视频在线观看| 亚洲精品mp4| 少妇喷水在线观看| 欧美精品一区二区三区在线| 好男人www在线视频| 欧美mv日韩mv国产网站| 亚洲黄色精品视频| 精品国内二区三区| 男人天堂一区二区| 亚洲成人网在线观看| 黄色片一区二区| 黄色在线观看视频网站| 久久99免费视频| 久久久久久亚洲精品中文字幕| 免费黄色网址在线观看| 色爱av美腿丝袜综合粉嫩av| 成黄免费在线| 最近2019中文免费高清视频观看www99 | 精品久久久久久久久久久久久久久 | 久久视频中文字幕| 中文字幕在线三区| 欧美日本中文字幕| 超碰中文在线| 97精品国产97久久久久久免费| 男人的天堂免费在线视频| 538国产精品视频一区二区| 亚洲小少妇裸体bbw| 国产ts一区二区| 国产精品高潮久久| 成人免费高清完整版在线观看| 蜜桃精品一区二区三区| 国产a一区二区| 日韩理论电影中文字幕| 欧美精品一区在线发布| 日韩黄色大片| 大陆极品少妇内射aaaaaa| 黄色亚洲精品| 久久精品午夜福利| 免费高清成人在线| 在线播放黄色av| 成人免费看的视频| 国产成人av一区二区三区不卡| 中文字幕av一区二区三区高| 国产在线免费看| 亚洲福利电影网| 激情五月婷婷网| 欧美一区二区三区爱爱| 欧美视频xxx| 国产性色av一区二区| 爆操欧美美女| 欧美伊久线香蕉线新在线| 素人啪啪色综合| 国产精品一区二区欧美黑人喷潮水| 蜜桃成人av| 黄色录像特级片| 老司机免费视频久久| 亚洲精品在线网址| 99精品国产91久久久久久| 91动漫免费网站| 偷拍一区二区三区| 91亚洲国产成人久久精品麻豆| 精品成人一区二区三区四区| 高清av在线| 97国产在线视频| 久久亚洲精品人成综合网| 99久久99| 色综合蜜月久久综合网| 久久久亚洲精品无码| 极品少妇xxxx精品少妇偷拍| 精品人妻一区二区三区香蕉| 亚洲人妖av一区二区| 久久夜色精品国产噜噜亚洲av| 777午夜精品免费视频| 日夜干在线视频| 欧美激情a∨在线视频播放| 久久日本片精品aaaaa国产| 国产一区二区自拍| 亚洲九九在线| 天堂在线资源视频| 91在线视频免费91| 久操视频免费在线观看| 欧美亚洲一区三区| 日韩精品一二| 午夜精品一区二区三区在线视频 | 福利视频第一页| 欧美性xxxx极品hd满灌| 亚洲欧美高清视频| 久久精品视频在线播放| 蜜桃精品在线| 久久久国产精品一区二区三区| 欧美激情综合色综合啪啪| 99日在线视频| 欧美激情一区在线| 波多野结衣黄色| 国产视频久久久久| 蜜桃视频在线网站| 成人自拍偷拍| 亚洲私人影院| 日本泡妞xxxx免费视频软件| 亚洲欧美aⅴ...| 11024精品一区二区三区日韩| 尤物精品国产第一福利三区 | 成人一区二区电影| 日韩精品dvd| 99sesese| 国产精品美女久久久久久久| 波多野结衣午夜| 国产亚洲精品日韩| 日韩三区在线| 无遮挡亚洲一区| 日本亚洲视频在线| 国产又粗又长又硬| 欧美日韩亚洲另类| 香蕉视频网站在线观看| 成人两性免费视频| 亚洲精品网址| 18深夜在线观看免费视频| 一区二区三区四区高清精品免费观看| 国产又黄又大又粗的视频| 精品国产一区二区在线| 伊人国产精品| 99精品一区二区三区的区别| 国产乱对白刺激视频不卡| 欧美黑人精品一区二区不卡| 欧美哺乳videos| av漫画网站在线观看| 欧美xxxx黑人又粗又长精品| 爽好久久久欧美精品| 成年人看的免费视频| 欧美日韩国产综合视频在线观看| 巨大荫蒂视频欧美大片| 97自拍视频| 国产毛片久久| 亚洲精品国产精品国自| 欧美女孩性生活视频| 日本动漫理论片在线观看网站 | 国产精品久久久久久久av大片| 日韩aaaa| 无码成人精品区在线观看| 欧美视频在线免费看| 午夜伦全在线观看| 91网免费观看| 在线亚洲精品| 一区二区三区伦理片| 91麻豆精品国产91久久久| av资源中文在线天堂| 亚洲欧洲一区二区福利| 国产v日产∨综合v精品视频| 中文字幕超碰在线| 日韩亚洲精品电影| 国产香蕉精品| 五月婷婷狠狠操| 亚洲免费观看高清完整版在线| 天堂国产一区二区三区| 国产精品成人久久久久| 狠狠色狠狠色综合日日tαg| 无码 人妻 在线 视频| 日韩午夜三级在线| 美脚恋feet久草欧美| 三级在线免费观看| 久久久久久久网| а√天堂资源在线| 国产成人精品视| 亚洲午夜精品久久久久久app| 欧美巨胸大乳hitomi| 亚洲精品福利视频| 精品一区二区三区亚洲|