资源简介

jdbcTemplate分页彻底解决,使用游标滚动,看了Spring源码才解决了问题

资源截图

代码片段和文件信息

package com.utils;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;
import java.util.Map;
import java.sql.Types;

import javax.sql.DataSource;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.PreparedStatementCreatorFactory;
import org.springframework.jdbc.core.RowMapper;

public class JdbcTemplateExtend extends JdbcTemplate {
@Override
public List queryForList(String arg0 object[] arg1)
throws DataAccessException {
return super.queryForList(arg0 arg1);
}

private DataSource dataSource;

/**
 * 默认构造器,调用此方法初始化,需要调用setDataSource设置数据源
 */
public JdbcTemplateExtend() {
}

/**
 * 初始构造器
 * 
 * @param dataSource
 *            数据源
 */
public JdbcTemplateExtend(DataSource dataSource) {
this.dataSource = dataSource;
super.setDataSource(dataSource);
}

/**
 * 普通分页查询

 * 如果结果结合比较大应该调用setFetchsize() 和setMaxRow两个方法来控制一下,否则会内存溢出
 * 
 * @see #setFetchSize(int)
 * @see #setMaxRows(int)
 * @param sql
 *            查询的sql语句
 * @param startRow
 *            起始行
 * @param rowsCount
 *            获取的行数
 * @return
 * @throws DataAccessException
 */
@SuppressWarnings(“unchecked“)
public List querySP(String sql int startRow int rowsCount)
throws DataAccessException {
return querySP(sql startRow rowsCount getColumnMapRowMapper());
}

/**
 * 自定义行包装器查询

 * 如果结果结合比较大应该调用setFetchsize() 和setMaxRow两个方法来控制一下,否则会内存溢出
 * 
 * @see #setFetchSize(int)
 * @see #setMaxRows(int)
 * @param sql
 *            查询的sql语句
 * @param startRow
 *            起始行
 * @param rowsCount
 *            获取的行数
 * @param rowMapper
 *            行包装器
 * @return
 * @throws DataAccessException
 */
@SuppressWarnings(“unchecked“)
public List querySP(String sql int startRow int rowsCount
RowMapper rowMapper) throws DataAccessException {
return (List) query(sql new SplitPageResultSetExtractor(rowMapper
startRow rowsCount));
}

/**
 * 普通分页查询

 * 如果结果结合比较大应该调用setFetchsize() 和setMaxRow两个方法来控制一下,否则会内存溢出
 * 
 * @see #setFetchSize(int)
 * @see #setMaxRows(int)
 * @param sql
 *            查询的sql语句
 * @param startRow
 *            起始行
 * @param rowsCount
 *            获取的行数
 * @return
 * @throws DataAccessException
 */
@SuppressWarnings(“unchecked“)
public List queryForListPagination(String sql object[] arg1
int startRow int rowsCount) throws DataAccessException {
return queryPagination(sql arg1 startRow rowsCount
getColumnMapRowMapper());
}

/**
 * 普通分页查询

 * 如果结果结合比较大应该调用setFetchsize() 和setMaxRow两个方法来控制一下,否则会内存溢出
 * 
 * @see #setFetchSize(int)
 * @see #setMaxRows(int)
 * @param types[]
 *           传递参数的类型值 java.sql.Types.VARCHAR

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1902  2009-05-29 14:41  SplitPageResultSetExtractor.java

     文件       5331  2009-05-29 14:38  JdbcTemplateExtend.java

----------- ---------  ---------- -----  ----

                 7233                    2


评论

共有 条评论