中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

springboot~將一個Integer類型序(xu)列(lie)為k/v對象

對(dui)于一些帶著固定(ding)標(biao)簽的(de)(de)字(zi)(zi)(zi)段(duan)來說(shuo),我們(men)通常(chang)把它們(men)配置到字(zi)(zi)(zi)段(duan)中(zhong),而在數(shu)據庫(ku)中(zhong)存(cun)它們(men)的(de)(de)字(zi)(zi)(zi)典code,或者是字(zi)(zi)(zi)典主鍵,不(bu)是一個整型(xing)的(de)(de)數(shu)字(zi)(zi)(zi),而在前端顯示(shi)時,有時需(xu)要將(jiang)它們(men)翻(fan)(fan)譯成(cheng)名稱,這時后(hou)端可(ke)以幫他們(men)進(jin)行翻(fan)(fan)譯,或者前端通過(guo)code自己(ji)使(shi)用字(zi)(zi)(zi)典翻(fan)(fan)譯;下(xia)面說(shuo)一下(xia)第一種,后(hou)端在View model中(zhong)將(jiang)integer類型(xing)的(de)(de)字(zi)(zi)(zi)典字(zi)(zi)(zi)典翻(fan)(fan)譯成(cheng)一個k/v的(de)(de)對(dui)象。

JsonSerializer

一個json序(xu)(xu)列(lie)化(hua)的基(ji)類(lei),我們(men)可(ke)以繼承它,并(bing)實(shi)現(xian)自(zi)己的原因,在springboot框架中(zhong),你返回的json對(dui)象事實(shi)上是jackson幫我們(men)做(zuo)了一次(ci)序(xu)(xu)列(lie)化(hua)工(gong)作,而(er)我們(men)的字段如果希望在序(xu)(xu)列(lie)化(hua)時行加(jia)工(gong),可(ke)以利(li)用這個環(huan)節(jie),下(xia)面(mian)定義一下(xia)DictionarySerializer,來(lai)實(shi)現(xian)字典字段的序(xu)(xu)列(lie)化(hua)。

/**
 * 自定義序列化器,將一個Integer類型的字段序列化成一個name/code的對象
 */
public class DictionarySerializer extends JsonSerializer<Integer> {
    @Autowired
    DictionaryMapper dictionaryMapper;

    @Override
    public void serialize(Integer value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        //獲取當前字段的名稱
        String type = jsonGenerator.getOutputContext().getCurrentName();
        Integer code = (Integer) value;
        jsonGenerator.writeStartObject();
        Dictionary dictionary = dictionaryMapper.selectOne(
                new QueryWrapper<Dictionary>().lambda()
                        .eq(Dictionary::getCode, code)
                        .eq(Dictionary::getType, type));
        if (dictionary == null)
            throw new IllegalArgumentException(String.format("字典數據未配置,類型:%s,值:%s", type, code));

        jsonGenerator.writeStringField("name", dictionary.getName());
        jsonGenerator.writeNumberField("code", code);
        jsonGenerator.writeEndObject();

    }
}

在實(shi)體中gender字段(duan)會進行聲明

   @ApiModelProperty("性別")
   @JsonSerialize(using= DictionarySerializer.class)
   private Integer gender;
 

在(zai)接(jie)口中(zhong)返(fan)回一(yi)個對(dui)象,對(dui)象中(zhong)包含了(le)gender字(zi)段,而這個字(zi)段已經被序列化成對(dui)象,本例(li)通過查詢數據庫實現,實際(ji)工作中(zhong),應(ying)該通過緩存來實現。

 {
                "id": "ab9a48d4f49d93237f7090d340d9fa07",
                "username": "123",
                "email": "123@qq.com",
                "phone": "13754911028",
                "realName": null,
                "roleList": [
                    {
                        "id": "1",
                        "name": "管理員1"
                    }
                ],
                "createTime": "2022-04-12T10:04:14",
                "updateTime": "2022-04-12T10:04:14",
                "createBy": "admin",
                "updateBy": "admin",
                "status": 1,
                "organization": null,
                "job": null,
                "gender": {
                    "name": "男",
                    "value": 0
                }
            }
posted @ 2022-04-18 21:28  張占嶺  閱讀(335)  評論(0)    收藏  舉報