yanyanwoainio 2012-08-09 10:41
浏览 396
已采纳

数据大批量导出

我的sql

public List doListForPager(HttpServletRequest request, int pageSize,
String pageFormat, Map map) {
if(map != null && "true".equals(map.get("export"))){
return baseDao.queryForList(getQuerySQL(map)[2]);
}else{
return baseDao.findAllRecordForPager(request, pageSize, getQuerySQL(map), pageFormat);
}
}

public String[] getQuerySQL(Map map) {
String sql = getWhereSQL(map);

    String sql_export = "select h.*,row_number() over(order by h.year desc, h.staff_code, h.id desc) row_num from hisattend h where rownum<=10000";
    String array[]={sql_export};
    return array;
}

public String getWhereSQL(Map map) {
StringBuffer buffer = new StringBuffer(" where 1=1 ");
return buffer.toString();
}

action
public String doExcel() throws Exception{
map = getMap(getRequest());
map.put("export", "true");
list = historyAttendService.doListForPager(null, 0, "", map);
return SUCCESS;
}

jsp

//导出
function expData() {
var url = "<%=basePath%>attend/history/history_doExcel.action";
$("#searchForm").attr("action",url);
$("#searchForm").submit();
}

<%@ include file="/commons/page.jsp"%>

page.jsp



${requestScope.pagetool}

请问下如何分页导出 数据有20万条,我一次导出一万,第二次点导出的时候导出的还是前一万记录,请问怎么可以接着导出?

  • 写回答

5条回答 默认 最新

  • liuyinhuan0409 2012-08-09 11:01
    关注

    改一下分页查询的sql,比如你要导第10000到20000条记录的时候:
    [code="sql"]
    select *
    from (select h.*,
    row_number() over(order by h.year desc, h.staff_code, h.id desc) row_num
    from hisattend h
    where rownum <= 20000)
    where row_num >= 10000

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记