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

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

安徽房和城鄉(xiāng)建設(shè)部網(wǎng)站網(wǎng)站優(yōu)化排名技巧

安徽房和城鄉(xiāng)建設(shè)部網(wǎng)站,網(wǎng)站優(yōu)化排名技巧,做旅游網(wǎng)站教程,大站網(wǎng)站建設(shè)問題情景&#xff1a; 最近項(xiàng)目中遇到了根據(jù)第三方系統(tǒng)傳遞過來的參數(shù)&#xff0c;封裝為List<實(shí)體類對(duì)象>后&#xff0c;將該實(shí)體類轉(zhuǎn)換為csv文件&#xff0c;然后上傳到遠(yuǎn)程的sftp服務(wù)器指定目錄的需求。 實(shí)現(xiàn)思路&#xff1a; List<實(shí)體類對(duì)象>轉(zhuǎn)為csv文件的…

問題情景:

最近項(xiàng)目中遇到了根據(jù)第三方系統(tǒng)傳遞過來的參數(shù),封裝為List<實(shí)體類對(duì)象>后,將該實(shí)體類轉(zhuǎn)換為csv文件,然后上傳到遠(yuǎn)程的sftp服務(wù)器指定目錄的需求。

實(shí)現(xiàn)思路:

  1. List<實(shí)體類對(duì)象>轉(zhuǎn)為csv文件的過程。通過OpenCsv實(shí)現(xiàn)。

阻塞點(diǎn):

1.最開始遇到了生成的csv文件的第一行生成的字段名,變成了實(shí)體類的大寫字段名了,例如userName變?yōu)閁SERNAME并且排序混亂。
2.通過查閱資料找到了以下兩個(gè)注解,后期卻發(fā)現(xiàn)兩個(gè)注解不能同時(shí)出現(xiàn)。詳見文章
為什么 opencsv 在寫入文件時(shí)將 csv 標(biāo)頭大寫

@CsvBindByName(column = "TradeID")
@CsvBindByPosition(position = 0)

解決方案:

方案一:
創(chuàng)建自定義MappingStrategy :

class CustomMappingStrategy extends ColumnPositionMappingStrategy {
private static final String[] HEADER = new String[]{“TradeID”, “GWML GUID”, “MXML GUID”, “GWML File”, “MxML File”, “MxML Counterparty”, “GWML Counterparty”};

@Override
public String[] generateHeader() {return HEADER;
}

}
并在StatefulBeanToCsvBuilder使用它:

final CustomMappingStrategy mappingStrategy = new CustomMappingStrategy<>();
mappingStrategy.setType(MappingsBean.class);

final StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer)
.withMappingStrategy(mappingStrategy)
.build();
beanToCsv.write(makeFinalMappingBeanList());
writer.close()
在MappingsBean類中,我們留下了CsvBindByPosition注釋 - 以控制排序(在此解決方案中, CsvBindByName注釋)。 由于自定義映射策略,標(biāo)題列名稱包含在生成的 CSV 文件中。

此解決方案的缺點(diǎn)是,當(dāng)我們通過CsvBindByPosition注釋更改列順序時(shí),我們必須手動(dòng)更改自定義映射策略中的HEADER常量。

方案二:
該方案可以根據(jù)實(shí)體類字段名稱生成CSV第一行,注意一定不要加@CsvBindByName注解,具體文章可以參考o(jì)pencsv 將對(duì)象數(shù)組導(dǎo)出為 csv 文件時(shí)、文件列按對(duì)象字段定義順序排序的實(shí)現(xiàn)

@SneakyThrows
public <T> String generateCsvFile(List<? extends T> exportResults, String fileName)throws IOException, CsvDataTypeMismatchException, CsvRequiredFieldEmptyException {String finalFileName = new File(nginxDownloadPath,fileName + System.currentTimeMillis() + ".csv").getPath();Writer writer = new FileWriter(finalFileName);CSVWriter csvWriter = new CSVWriter(writer,CSVWriter.DEFAULT_SEPARATOR,CSVWriter.DEFAULT_QUOTE_CHARACTER,CSVWriter.NO_ESCAPE_CHARACTER,CSVWriter.DEFAULT_LINE_END);csvWriter.writeNext(header);if (exportResults.size() > 0) {//寫內(nèi)容StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder<T>(writer).withMappingStrategy(new OrderColumnMappingStrategy(exportResults.get(0).getClass())).withIgnoreField(exportResults.get(0).getClass(), Arrays.stream(exportResults.get(0).getClass().getDeclaredFields()).filter(one -> {one.setAccessible(true);return one.isAnnotationPresent(CsvIgnore.class);}).findFirst().orElse(null)).build();beanToCsv.write(exportResults);}csvWriter.close();writer.close();return finalFileName;
}public class OrderColumnMappingStrategy<T> extends HeaderColumnNameMappingStrategy<T> {private Locale errorLocale = Locale.getDefault();public OrderColumnMappingStrategy(Class<? extends T> type) {super();this.setErrorLocale(errorLocale);this.setType(type);}@Overridepublic String[] generateHeader(T bean) throws CsvRequiredFieldEmptyException {if (type == null) {throw new IllegalStateException(ResourceBundle.getBundle(ICSVParser.DEFAULT_BUNDLE_NAME, errorLocale).getString("type.before.header"));}if (headerIndex.isEmpty()) {List<String> realHeaderList = new ArrayList<>();/**getFieldNameForCsvHeader()方法是通過反射獲取對(duì)象的字段, 字段是按照定義順序返回的. 這里就不貼出代碼了*/getFieldNameForCsvHeader(type).forEach(one -> {realHeaderList.add(one.toUpperCase());});String[] header = realHeaderList.toArray(new String[0]);headerIndex.initializeHeaderIndex(header);return header;}return headerIndex.getHeaderIndex();}
}
http://aloenet.com.cn/news/47491.html

相關(guān)文章:

  • 創(chuàng)立制作網(wǎng)站公司國家免費(fèi)培訓(xùn)機(jī)構(gòu)
  • wordpress 導(dǎo)入限制seo sem
  • 關(guān)于優(yōu)化調(diào)整疫情防控相關(guān)措施seo優(yōu)化技術(shù)排名
  • 如何入侵自己做的網(wǎng)站網(wǎng)絡(luò)營銷最基本的應(yīng)用方式是什么
  • 做優(yōu)惠卷網(wǎng)站倒閉了多少錢黃頁引流推廣
  • 自己做網(wǎng)站的優(yōu)勢(shì)自己開網(wǎng)站怎么開
  • 新手做網(wǎng)站教程網(wǎng)站seo如何做好優(yōu)化
  • 新手如何做海外網(wǎng)站代購優(yōu)化網(wǎng)絡(luò)的軟件
  • 論文引用網(wǎng)站數(shù)據(jù) 如何做注釋互聯(lián)網(wǎng)銷售公司
  • 網(wǎng)絡(luò)科技公司 網(wǎng)站建設(shè)百度廣告推廣費(fèi)用
  • 北京做網(wǎng)站費(fèi)用深圳全網(wǎng)營銷系統(tǒng)
  • 沈陽微信網(wǎng)站制作價(jià)格廣州seo公司哪個(gè)比較好
  • 網(wǎng)站站內(nèi)推廣計(jì)劃書國外網(wǎng)站搭建
  • 北流網(wǎng)站建設(shè)山東百搜科技有限公司
  • 一個(gè)人怎么做網(wǎng)站專業(yè)的網(wǎng)站優(yōu)化公司排名
  • 武漢模板自助建站seo技術(shù)優(yōu)化服務(wù)
  • 網(wǎng)站維護(hù)具體怎么做呀合肥seo排名收費(fèi)
  • 用java怎么做門戶網(wǎng)站怎么樣做免費(fèi)的百度seo
  • 阿里巴巴網(wǎng)站如何做免費(fèi)推廣推廣方案設(shè)計(jì)
  • 網(wǎng)站建設(shè)的內(nèi)容做網(wǎng)站seo優(yōu)化
  • 移動(dòng)端網(wǎng)站設(shè)計(jì)制作企業(yè)網(wǎng)絡(luò)搭建方案
  • 極速網(wǎng)站建設(shè)哪家好電商運(yùn)營自學(xué)全套教程
  • 網(wǎng)絡(luò)營銷的主要形式有建設(shè)網(wǎng)站網(wǎng)站推廣排名優(yōu)化
  • 中企動(dòng)力雙語網(wǎng)站企業(yè)網(wǎng)絡(luò)營銷目標(biāo)
  • 貴州省建設(shè)監(jiān)理協(xié)會(huì)網(wǎng)站是什么如何制作微信小程序店鋪
  • 東莞免費(fèi)企業(yè)網(wǎng)站模板推廣搜狗網(wǎng)站收錄入口
  • 余姚企業(yè)網(wǎng)站建設(shè)青島seo推廣
  • 有沒有適合寶媽找工作做兼職的網(wǎng)站web免費(fèi)網(wǎng)站
  • 東莞高端品牌網(wǎng)站建設(shè)營銷推廣的工具有哪些
  • 怎樣獲得做網(wǎng)站的客戶源碼之家