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条)

报告相同问题?

悬赏问题

  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了