java 一个参数控制是普通查询还是导出操作,适合懒人操作

其实很简单,入参设置一个export(非必传,用小布尔,省了判空的步骤),这样查询的url可以不传export,导出的url则传?export=true

代码如下

package com.test.web.controller;

import com.test.entity.po.UserInfo;
import com.test.entity.query.UserInfoQuery;
import com.test.service.UserInfoService;
import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

@RestController
@RequestMapping("/test")
public class TestExportController extends ABaseController{
    @Resource
    private UserInfoService userInfoService;

    @RequestMapping("/getUser")
    public List<UserInfo> register(@RequestParam(required = false) boolean export, HttpServletResponse response) {

        List<UserInfo> result = userInfoService.findListByParam(new UserInfoQuery());

        if (export) {// 导出Excel
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setHeader("Content-Disposition", "attachment; filename=data.xlsx");

            try (OutputStream os = response.getOutputStream()) {

                //可以使用easyExcel来快速导出操作,这里直接用本地文件测试。。
                FileInputStream fis = new FileInputStream("C:\\Users\\huang\\Desktop\\测试.xlsx");
                IOUtils.copy(fis, os);

            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            return null;

        } else {// 正常返回数据集
            return result;
        }
    }
}

 

  

 

posted @ 2025-07-19 14:27  何足道66  阅读(8)  评论(0)    收藏  举报