将分批分页查询的数据导出成excel表格
将数据库中的数据按照一定的过滤和排序规则,进行分批分页查询后生成Excel或者其他形式的报表数据,然后提供前端给下载是一个比较常见的业务场景,而且一般还会限定最大的行数,或者由前端指定行数。其实这个逻辑比较简单,分批查询数据,用几个for循环就可以搞定。但是报表很多的话,写起来也有点烦。于是想到把分页数据包装成流,简化api。 定义了几个简单的类,只要查询数据的Service层方法实现PagingQuery接口,而Domain实现CsvLine接口即可。
CsvLine.java
/**
* @author zouk
**/
public interface CsvLine {
/**
* generate a line
*
* @return a csv line
*/
String[] csvLine();
}
PagingQuery.java
import java.util.List;
/**
* @author zouk
**/
public interface PagingQuery {
/**
* paging query data base
*
* @param offset offer for sql
* @param limit limit for sql
* @return list of CsvLine
*/
List query(int