国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口

這篇具有很好參考價值的文章主要介紹了【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口,JavaEE,MySQL,數(shù)據(jù)庫,mysql,spring boot

【MySQL × SpringBoot 小點子】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口

在上一篇博客,【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · xlsx文件,Excel表格導(dǎo)入數(shù)據(jù)庫的接口_s:103的博客-CSDN博客

我們學(xué)習(xí)了如何導(dǎo)入表格,現(xiàn)在我們反過來,看看如何導(dǎo)出表格~

1. 什么是VO(View Object)對象

網(wǎng)絡(luò)資料:

View Object(視圖對象)是一種在軟件開發(fā)中常見的設(shè)計模式,它用于在用戶界面(UI)層與業(yè)務(wù)邏輯層(業(yè)務(wù)模型)之間進(jìn)行數(shù)據(jù)交互。其主要目的是在UI層提供一個面向用戶的數(shù)據(jù)模型,將業(yè)務(wù)模型中的數(shù)據(jù)進(jìn)行適配、處理和展示,從而實現(xiàn)UI與業(yè)務(wù)邏輯的解耦。

View Object具有以下特點和作用:

  1. 封裝數(shù)據(jù):View Object通過封裝業(yè)務(wù)模型中的數(shù)據(jù),將其進(jìn)行適配和轉(zhuǎn)換,以適應(yīng)UI層的需求。它可以包含計算屬性、格式化數(shù)據(jù)、過濾數(shù)據(jù)等操作,使得UI層能夠更直接地訪問和展示數(shù)據(jù)。

  2. 提供友好的數(shù)據(jù)接口:View Object通常會為UI層提供簡單和易于使用的數(shù)據(jù)接口,使得UI層可以輕松地獲取和修改其中的數(shù)據(jù)。它往往會提供諸如getters、setters、事件通知等方法,以便UI層對其數(shù)據(jù)進(jìn)行操作和監(jiān)聽。

  3. 簡化UI開發(fā):通過使用View Object,UI開發(fā)人員可以專注于UI設(shè)計和交互邏輯的實現(xiàn),而無需過多關(guān)注業(yè)務(wù)邏輯的處理和數(shù)據(jù)處理等細(xì)節(jié)。同時,View Object還可以提供數(shù)據(jù)驗證、狀態(tài)管理等功能,簡化UI開發(fā)過程。

  4. 實現(xiàn)UI與業(yè)務(wù)邏輯的解耦:View Object作為UI層與業(yè)務(wù)邏輯層之間的中間層,可以實現(xiàn)兩者的解耦。它可以根據(jù)UI層的需求對業(yè)務(wù)模型進(jìn)行適配,使得業(yè)務(wù)模型的變化對UI層來說是透明的,從而提高系統(tǒng)的靈活性和可維護(hù)性。

需要注意的是,View Object并不是所有項目中必須存在的概念,它在一些復(fù)雜的UI交互、數(shù)據(jù)處理較為復(fù)雜的場景下更常見,并且在不同的技術(shù)棧和框架中實現(xiàn)方式也會有所差異。

我覺得最重要的一點就是,滿足前端需求的一組數(shù)據(jù)

在前后端交互過程中,一般有三種情況:

  1. 后端的一個實體類需要刪減一些數(shù)據(jù),不發(fā)給前端
  2. 后端的一個實體類需要多加一些數(shù)據(jù),發(fā)給前端
  3. 后端的一個實體類全部信息都發(fā)給前端

第三種不必多說,正常寫代碼;

第二種我們也很常見,vo對象擴(kuò)展我們的實體類,新增屬性,例如聯(lián)合對象啥的,也可以通過返回哈希表實現(xiàn);

第一種我們也可以實現(xiàn),可以通過注解讓一個屬性不參與序列化而實現(xiàn),也可以用一個vo對象,其中只包含實體類的一部分屬性,之后通過一個方法,將實體類與vo對象之間進(jìn)行數(shù)據(jù)賦值。

2. BeanCopyUtils進(jìn)行兩個對象的數(shù)據(jù)轉(zhuǎn)移

名字是這樣的,我們也可以作用于不是bean對象的呀~

public class BeanCopyUtils {
    private BeanCopyUtils() {
    }

    /** 單個對象*/
    public static <V> V copyBean(Object source, Class<V> clazz) {
        /** 創(chuàng)建目標(biāo)對象 實現(xiàn)屬性拷貝*/
        V result = null;
        try {
            result = clazz.newInstance();
            /** 拷貝*/
            BeanUtils.copyProperties(source, result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    
    /** 集合*/
    public static <O, V> List<V> copyBeanList(List<O> list, Class<V> clazz) {
        /** 創(chuàng)建目標(biāo)對象 實現(xiàn)屬性拷貝*/
        return list.stream()
                .map(o -> copyBean(o, clazz))
                .collect(Collectors.toList());
    }
}
  1. copyBean方法,將第一個參數(shù)轉(zhuǎn)換為第二個參數(shù)(類對象)的類型
    • 轉(zhuǎn)化邏輯是通過相同的屬性名
  2. copyBeanList方法,將第一個參數(shù)列表轉(zhuǎn)換為第二個參數(shù)(類對象)的類型的列表
    • 轉(zhuǎn)化邏輯是通過相同的屬性名

3. mapper層實現(xiàn)

這里我圖方便,直接用注解實現(xiàn)mapper方法

示例:

【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口,JavaEE,MySQL,數(shù)據(jù)庫,mysql,spring boot

小開發(fā)是這樣的,正經(jīng)開發(fā)可不是這樣不嚴(yán)謹(jǐn)?shù)泥福?/p>

4. service層實現(xiàn)

示例:

【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口,JavaEE,MySQL,數(shù)據(jù)庫,mysql,spring boot

5. vo對象創(chuàng)建

示例:Course對象的表格展示vo對象

@Data
@NoArgsConstructor
@AllArgsConstructor
@ExcelTarget("excelCourse")//表格實體類的id,可以針對一個實體類做不同導(dǎo)出,本文暫時不涉及
public class ExcelCourseVo {

    @Excel(name = "course", width = 20)//列名、寬度
    private String course_name;

    @Excel(name = "credit", width = 20)
    private BigDecimal credit;

    @Excel(name = "school", width = 20)
    private Integer school_year;

    @Excel(name = "semester", width = 20)
    private Integer semester;
}

6. 保存路徑配置

【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口,JavaEE,MySQL,數(shù)據(jù)庫,mysql,spring boot

public class Constants {

    // excel表
    public static final String XLSX_DIR = "D:\\study\\excel";

    public static final String XLSX_NAME1 = "easypoi1.xlsx";
    public static final String XLSX_NAME2 = "easypoi2.xlsx";
    public static final String XLSX_NAME3 = "easypoi3.xlsx";
    public static final String XLSX_NAME4 = "easypoi4.xlsx";

}

7. controller層核心代碼實現(xiàn)

示例:

@GetMapping("/print")
@ApiOperation("打印表格")
public void print() {
    List<Course> list = courseService.selectAll();
    List<ExcelCourseVo> excelCourseVos = BeanCopyUtils.copyBeanList(list, ExcelCourseVo.class);
    // 導(dǎo)出
    ExportParams params = new ExportParams();
    params.setTitle("測試");
    // 表格左下角sheet名稱
    params.setSheetName("課程信息");
    Workbook workbook = ExcelExportUtil.exportExcel(params, ExcelCourseVo.class, excelCourseVos);
    try{
        // 文件夾是否存在,若沒有對應(yīng)文件夾直接根據(jù)路徑生成文件會報錯
        File folder = new File(Constants.XLSX_DIR);
        if (!folder.exists() && !folder.isDirectory()) {
            folder.mkdirs();
        }
        // 文件是否存在
        File file = new File(Constants.XLSX_DIR + "\\" + Constants.XLSX_NAME1);
        if (!file.exists()){
            file.createNewFile();
        }
        // 輸出流寫入(覆蓋)
        FileOutputStream outputStream = new FileOutputStream(Constants.XLSX_DIR + "\\" + Constants.XLSX_NAME1);
        workbook.write(outputStream);
        // 關(guān)閉寫,不然用戶點擊生成的文件會顯示只讀
        outputStream.close();
        workbook.close();
    }catch (IOException e){
        e.printStackTrace();
    }
    System.out.println("打印成功");
}

8. wagger接口

示例:

【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口,JavaEE,MySQL,數(shù)據(jù)庫,mysql,spring boot

找到對應(yīng)目錄:

【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口,JavaEE,MySQL,數(shù)據(jù)庫,mysql,spring boot

導(dǎo)出成功:

【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口,JavaEE,MySQL,數(shù)據(jù)庫,mysql,spring boot

9. 補(bǔ)充

你如果比較懶,那就用原始的那個實體類對象就行了:

  • 因為實體類和vo對象在程序眼里都是自定義的類罷了,只是我們?nèi)藶榈慕o他們意義

【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口,JavaEE,MySQL,數(shù)據(jù)庫,mysql,spring boot

效果:

【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口,JavaEE,MySQL,數(shù)據(jù)庫,mysql,spring boot

強(qiáng)烈注意: 對表格的列名起名要正常,可以是中文啥的,但是不要出現(xiàn)一些奇奇怪怪的字符,例如下劃線就不行,這是我血的教訓(xùn)??????


文章到此結(jié)束!謝謝觀看
可以叫我 小馬,我可能寫的不好或者有錯誤,但是一起加油鴨??

代碼:memory · 游離態(tài)/馬拉圈2023年10月 - 碼云 - 開源中國 (gitee.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-713588.html


到了這里,關(guān)于【MySQL × SpringBoot 突發(fā)奇想】全面實現(xiàn)流程 · 數(shù)據(jù)庫導(dǎo)出Excel表格文件的接口的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包