国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

聊城 網(wǎng)站制作新冠咳嗽一般要咳多少天

聊城 網(wǎng)站制作,新冠咳嗽一般要咳多少天,淄博有做網(wǎng)站的嗎,我的世界皮膚做壁紙的網(wǎng)站源碼&#xff1a;https://gitee.com/cao_wen_bin/test 最近在公司遇到了這樣一個(gè)為題&#xff0c;前端傳過來的是一個(gè)List<Manager>,往數(shù)據(jù)庫中保存到時(shí)候是String&#xff0c;這個(gè)String使用谷歌的json轉(zhuǎn)化器。 當(dāng)查詢的時(shí)候在將這個(gè)數(shù)據(jù)庫中String的數(shù)據(jù)以List<Mana…

源碼:https://gitee.com/cao_wen_bin/test
最近在公司遇到了這樣一個(gè)為題,前端傳過來的是一個(gè)List<Manager>,往數(shù)據(jù)庫中保存到時(shí)候是String,這個(gè)String使用谷歌的json轉(zhuǎn)化器。
當(dāng)查詢的時(shí)候在將這個(gè)數(shù)據(jù)庫中String的數(shù)據(jù)以List<Manager>的形式返回給前端。
使用mapstruct中在怎樣將String轉(zhuǎn)化為List。在此記錄一下。

1.引入依賴

<!--mapstruct-->
<dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>1.5.5.Final</version>
</dependency>
<dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.5.5.Final</version>
</dependency>

2.PO->DTO

package com.cao.pojo;import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;@Data
@Accessors(chain = true)
@ToString
public class Manager {private String name;private String code;
}

需求是將PO轉(zhuǎn)化為DTO,但是PO中的類型是String,而DTO中的類型是List

ManagerPO中的acctManagerList屬性是String

package com.cao.po;import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;@Data
@Accessors(chain = true)
@ToString
public class ManagerPO {private Long id;private String acctManagerListString;
}

ManagerDTO中的acctManagerList屬性是List<Manager>

package com.cao.dto;import com.cao.pojo.Manager;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;import java.util.List;
@Data
@Accessors(chain = true)
@ToString
public class ManagerDTO {private Long id;private List<Manager> acctManagerList;
}

3.編寫轉(zhuǎn)換代碼

因?yàn)槲沂鞘褂玫腉son把List<Manager>轉(zhuǎn)換為String,所以從String轉(zhuǎn)換為List<Manager>也要用相同的json轉(zhuǎn)換,不然會(huì)出現(xiàn)異常

import com.cao.dto.ManagerDTO;
import com.cao.po.ManagerPO;
import com.cao.pojo.Manager;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang3.StringUtils;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;import java.util.List;@Mapper
public interface ManagerBeanConvert {ManagerBeanConvert INSTANCE = Mappers.getMapper(ManagerBeanConvert.class);@Mapping(target = "id", source = "id")@Mapping(target = "acctManagerList", expression = "java(MapStruct.strToList(managerPO.getAcctManagerListString()))")ManagerDTO po2Dto(ManagerPO managerPO);@Mapping(target = "id", source = "id")@Mapping(target = "acctManagerListString", expression = "java(MapStruct.listToStr(managerDTO.getAcctManagerList()))")ManagerPO dto2Po(ManagerDTO managerDTO);class MapStruct {/*** po中的String轉(zhuǎn)為dto中的list*/public static List<Manager> strToList(String acctManagerListString) {if (StringUtils.isNotEmpty(acctManagerListString)) {// 將po中的acctManagerListString用Gson轉(zhuǎn)換成為list(必須和list轉(zhuǎn)String使用相同的轉(zhuǎn)換器)List<Manager> managerList = new Gson().fromJson(acctManagerListString, new TypeToken<List<Manager>>() {}.getType());return managerList;}return null;}/*** dto中的list轉(zhuǎn)為po中的String*/public static String listToStr(List<Manager> managerList) {if (!CollectionUtils.isEmpty(managerList)) {// 將dto中的acctManagerList用Gson轉(zhuǎn)換成為String(必須和String轉(zhuǎn)list使用相同的轉(zhuǎn)換器)String managerListString = new Gson().toJson(managerList);return managerListString;}return null;}}
}

4.測(cè)試代碼和測(cè)試

import com.cao.beanconvert.ManagerBeanConvert;
import com.cao.dto.ManagerDTO;
import com.cao.po.ManagerPO;
import com.cao.pojo.Manager;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;import java.util.*;
@Slf4j
public class BeanConvertTest {public static void main(String[] args) {// po中的String轉(zhuǎn)為dto中的listpoString2DtoList();System.out.println("=====================");// dto中的list轉(zhuǎn)為po中的StringdtoList2PoString();}private static void dtoList2PoString() {List<Manager> managerList = new ArrayList<>();managerList.add(new Manager().setCode("0001").setName("管理員1號(hào)"));managerList.add(new Manager().setCode("0002").setName("管理員2號(hào)"));ManagerDTO managerDTO = new ManagerDTO().setId(3L).setAcctManagerList(managerList);log.info("managerDTO是: {}",managerDTO);ManagerPO managerPO = ManagerBeanConvert.INSTANCE.dto2Po(managerDTO);log.info("managerDTO轉(zhuǎn)換為managerPO結(jié)果是: {}",managerPO);}private static void poString2DtoList() {//設(shè)置List<Manager>List<Manager> managerList = new ArrayList<>();managerList.add(new Manager().setCode("0001").setName("管理員1號(hào)"));managerList.add(new Manager().setCode("0002").setName("管理員2號(hào)"));//使用Gson將list轉(zhuǎn)換成StringString managerListString = new Gson().toJson(managerList);ManagerPO managerPO = new ManagerPO();managerPO.setId(1L).setAcctManagerListString(managerListString);log.info("managerPO是:{}",managerPO);ManagerDTO managerDTO = ManagerBeanConvert.INSTANCE.po2Dto(managerPO);log.info("managerPO轉(zhuǎn)換為managerDTO結(jié)果是: {}",managerDTO);}
}

在這里插入圖片描述

5.改造

雖然上面的寫法已經(jīng)可以滿足需求了,但是在ManagerBeanConvert接口中寫內(nèi)部類的話不規(guī)范,所以要修改。
新建一個(gè)專門的用于類型屬性的轉(zhuǎn)換的類AttributeConvertUtil,將接口中的內(nèi)部類挪到這個(gè)新建的類中,并在方法上面加上@Named(“別名”)

import com.cao.pojo.Manager;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang3.StringUtils;
import org.mapstruct.Named;
import org.springframework.util.CollectionUtils;import java.util.List;public class AttributeConvertUtil {/*** po中的String轉(zhuǎn)為dto中的list*/@Named("strToList")public List<Manager> strToList(String acctManagerListString) {if (StringUtils.isNotEmpty(acctManagerListString)) {// 將po中的acctManagerListString用Gson轉(zhuǎn)換成為list(必須和list轉(zhuǎn)String使用相同的轉(zhuǎn)換器)List<Manager> managerList = new Gson().fromJson(acctManagerListString, new TypeToken<List<Manager>>() {}.getType());return managerList;}return null;}/*** dto中的list轉(zhuǎn)為po中的String*/@Named("listToStr")public String listToStr(List<Manager> managerList) {if (!CollectionUtils.isEmpty(managerList)) {// 將dto中的acctManagerList用Gson轉(zhuǎn)換成為String(必須和String轉(zhuǎn)list使用相同的轉(zhuǎn)換器)String managerListString = new Gson().toJson(managerList);return managerListString;}return null;}
}

修改接口,
1.在@Mapper上引用我們的自定義轉(zhuǎn)換代碼類AttributeConvertUtil
2.使用qualifiedByName指定我們使用的自定義轉(zhuǎn)換方法

import com.cao.dto.ManagerDTO;
import com.cao.po.ManagerPO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;@Mapper(uses = AttributeConvertUtil.class) //將自定義類引入進(jìn)來
public interface ManagerBeanConvert {ManagerBeanConvert INSTANCE = Mappers.getMapper(ManagerBeanConvert.class);@Mapping(target = "id", source = "id")@Mapping(target = "acctManagerList", source = "acctManagerListString", qualifiedByName = "strToList")// qualifiedByName的值和別名一樣ManagerDTO po2Dto(ManagerPO managerPO);@Mapping(target = "id", source = "id")@Mapping(target = "acctManagerListString", source = "acctManagerList", qualifiedByName = "listToStr") // qualifiedByName的值和別名一樣ManagerPO dto2Po(ManagerDTO managerDTO);
}

源碼:https://gitee.com/cao_wen_bin/test

http://aloenet.com.cn/news/31269.html

相關(guān)文章:

  • 可以做動(dòng)效的網(wǎng)站如何做百度關(guān)鍵詞推廣
  • 搭建什么網(wǎng)站好如何在百度上投放廣告
  • 如何免費(fèi)制作一個(gè)網(wǎng)站東莞網(wǎng)站推廣優(yōu)化網(wǎng)站
  • 網(wǎng)站返回首頁怎么做google下載app
  • 做電商需要知道的幾個(gè)網(wǎng)站嗎關(guān)鍵詞優(yōu)化價(jià)格表
  • 成都網(wǎng)站建設(shè) 四川冠辰科技臨沂seo顧問
  • 大型網(wǎng)站建設(shè)推薦輿情服務(wù)公司
  • 地方門戶網(wǎng)站帶手機(jī)版上海公司排名
  • 網(wǎng)站空間商推薦怎么發(fā)外鏈
  • 餐飲品牌形象設(shè)計(jì)案例seo工程師
  • 長春網(wǎng)站建設(shè)電話咨詢關(guān)鍵詞搜索量查詢工具
  • 做 直銷網(wǎng)站 公司北京網(wǎng)站建設(shè)公司案例
  • 政府網(wǎng)站集約化試點(diǎn)工作建設(shè)背景柳州網(wǎng)站建設(shè)哪里有
  • 云陽網(wǎng)站建設(shè)公司百度實(shí)時(shí)熱點(diǎn)排行榜
  • 餐飲公司最好的網(wǎng)站建設(shè)洛陽搜索引擎優(yōu)化
  • 專門 做鞋子團(tuán)購的網(wǎng)站湖北seo公司
  • 互助盤網(wǎng)站怎么做的保定seo建站
  • 公司品牌網(wǎng)絡(luò)推廣方案福州seo快速排名軟件
  • 用cs6怎么做網(wǎng)站品牌全網(wǎng)推廣
  • wordpress 寧皓seo人員的相關(guān)薪資
  • 烏魯木齊網(wǎng)站信息流投放平臺(tái)
  • 汽車行業(yè)網(wǎng)站設(shè)計(jì)網(wǎng)站域名備案信息查詢
  • 做網(wǎng)站跳轉(zhuǎn)揚(yáng)州網(wǎng)站推廣公司
  • wordpress 改成論壇北京中文seo
  • 網(wǎng)頁制作平臺(tái)的是自己怎么做關(guān)鍵詞優(yōu)化
  • 網(wǎng)站開發(fā) 實(shí)戰(zhàn)今日十大熱點(diǎn)新聞?lì)^條
  • 手機(jī)網(wǎng)站制作服務(wù)機(jī)構(gòu)想做網(wǎng)站找什么公司
  • 如何做自媒體和網(wǎng)站簽約賺點(diǎn)擊用asp做的網(wǎng)站
  • 怎樣給自己的網(wǎng)站做防紅連接佛山百度關(guān)鍵詞排名
  • 襄陽企業(yè)網(wǎng)站建設(shè)國際最新消息