`

jdbcTemplate分页封装

SQL 
阅读更多

1.JdbcTemplateExtend.java

public class JdbcTemplateExtend extends JdbcTemplate
{
private DataSource dataSource;
/**
* 默认构造器,调用此方法初始化,需要调用setDataSource设置数据源
*/
public JdbcTemplateExtend()
{
}
/**
* 初始构造器
*
* @param dataSource
* 数据源
*/
public JdbcTemplateExtend(DataSource dataSource)
{
this.dataSource = dataSource;
super.setDataSource(dataSource);
}
/**
* 普通分页查询<br>
* <b>如果结果结合比较大应该调用setFetchsize() 和setMaxRow两个方法来控制一下,否则会内存溢出</b>
* @see #setFetchSize(int)
* @see #setMaxRows(int)
* @param sql
* 查询的sql语句
* @param startRow
* 起始行
* @param rowsCount
* 获取的行数
* @return
* @throws DataAccessException
*/
@SuppressWarnings("unchecked")
public List<Map> querySP(String sql, int startRow, int rowsCount)
throws DataAccessException
{
return querySP(sql, startRow, rowsCount, getColumnMapRowMapper());
}
/**
* 自定义行包装器查询<br>
* <b>如果结果结合比较大应该调用setFetchsize() 和setMaxRow两个方法来控制一下,否则会内存溢出</b>
* @see #setFetchSize(int)
* @see #setMaxRows(int)
* @param sql
* 查询的sql语句
* @param startRow
* 起始行
* @param rowsCount
* 获取的行数
* @param rowMapper
* 行包装器
* @return
* @throws DataAccessException
*/
@SuppressWarnings("unchecked")
public List<Map> querySP(String sql, int startRow, int rowsCount, RowMapper rowMapper)
throws DataAccessException
{
return (List) query(sql, new SplitPageResultSetExtractor(rowMapper, startRow,
rowsCount));
}
public DataSource getDataSource()
{
return dataSource;
}
public void setDataSource(DataSource dataSource)
{
this.dataSource = dataSource;
super.setDataSource(dataSource);
}
}

2.SplitPageResultSetExtractor.java

public class SplitPageResultSetExtractor implements ResultSetExtractor
{
private final int start;// 起始行号
private final int len;// 结果集合的长度
private final RowMapper rowMapper;// 行包装器
public SplitPageResultSetExtractor(RowMapper rowMapper, int start, int len)
{
Assert.notNull(rowMapper, "RowMapper is required");
this.rowMapper = rowMapper;
this.start = start;
this.len = len;
}
/**
* 处理结果集合,被接口自动调用,该类外边不应该调用
*/
public Object extractData(ResultSet rs) throws SQLException, DataAccessException
{
List result = new ArrayList();
int rowNum = 0;
int end = start + len;
point: while (rs.next())
{
++rowNum;
if (rowNum < start)
{
continue point;
}
else
if (rowNum >= end)
{
break point;
}
else
{
result.add(this.rowMapper.mapRow(rs, rowNum));
}
}
return result;
}
}

分享到:
评论

相关推荐

    Spring jdbctemplate + mysql 分页封装

    综上所述,Spring JdbcTemplate结合MySQL的分页查询封装涉及到的主要知识点有:Spring的JdbcTemplate用法、MySQL的分页查询(LIMIT和OFFSET)、结果集映射、分页结果对象的构建、以及代码封装与复用。通过这些技术,...

    jdbcTemplate分页彻底解决,使用游标滚动

    本文将深入探讨如何使用`JdbcTemplate`配合游标滚动来解决分页问题,并结合提供的两个文件`JdbcTemplateExtend.java`和`SplitPageResultSetExtractor.java`进行讲解。 首先,我们需要理解什么是游标滚动。在数据库...

    SpringJdbcTemplate封装工具类

    SpringJdbcTemplate支持分页查询,通过`SimpleJdbcCall`或`NamedParameterJdbcCall`类,可以配合`RowCallbackHandler`或`ResultSetExtractor`处理分页结果。此外,还可以使用`JdbcPagingItemReader`作为Spring ...

    Spring--JdbcTemplate.pdf

    3. 执行分页查询:通过分页信息调用JdbcTemplate方法来返回结果集合。 JdbcTemplate的使用涉及到许多细节,如事务管理、异常处理和SQL注入防护等。在具体应用时,开发者需要结合实际业务需求和Spring框架的其他特性...

    SpringMvc+jdbcTemplate+mysql(注解)

    同时,可以使用Spring提供的Pageable接口和Page对象来封装分页信息。 【简单易懂】 本案例的特点是简单易懂,适合初学者学习。通过注解方式配置,使得代码更加简洁,减少了XML配置的工作量。同时,案例中包含完整的...

    Oracle + jdbcTemplate + Spring + Java + Flex 实现分页.docx

    总结起来,实现Oracle + jdbcTemplate + Spring + Java + Flex的分页查询,主要涉及以下步骤: 1. 在Oracle中创建存储过程,处理分页逻辑和计数。 2. 使用Spring的jdbcTemplate调用存储过程,处理输入输出参数。 3. ...

    JDBCTemplate+JavaPOJO实现通用DAO

    8. **性能优化**:JDBCTemplate支持批处理、分页查询等优化技巧,可以根据需求进行配置。 博客链接中提到的内容可能详细解释了如何配置和使用这些组件,并提供了实际的代码示例。通过这个项目,你可以学习到如何...

    JdbcTemplate文件

    为了解决这个问题,Spring框架提供了一个强大的工具——JdbcTemplate,它对JDBC进行了封装,简化了数据库操作,同时也保持了良好的灵活性和控制性。本文将深入探讨JdbcTemplate的使用和原理,以及其在实际项目中的...

    java分页实现(面向对象)

    1. 设计一个`Page`类来封装分页信息。 2. 编写服务类,如`PageService`,提供分页查询方法,包含SQL的构造、执行以及结果转换。 3. 针对不同的数据库操作工具(JDBC、ORM框架等),适配相应的查询方式。 4. 考虑到...

    java 通用数字分页

    Java中的数字分页是Web应用开发中常见的需求,特别是在大数据量的展示场景下,为了...通过封装和复用分页逻辑,可以使代码更加整洁,提高开发效率。同时,对于前端展示,还可以考虑使用AJAX无刷新分页,提升用户体验。

    SSH分页组件

    由于SSH框架本身的分页功能可能不能满足所有需求,开发者通常会创建自己的分页组件,封装通用的分页逻辑,包括计算总页数、生成分页链接、处理排序条件等。这样的组件可以提高代码复用性和可维护性。 5. **前端...

    PageBean分页查询

    总结来说,PageBean分页查询是一种有效的数据管理策略,它通过封装分页信息,简化了前后端交互,提高了系统的响应速度。在Java开发中,我们可以利用持久层框架提供的功能,结合SQL的分页语法,实现高效且灵活的分页...

    ssi分页模板

    5. **处理结果**:将查询结果封装为业务对象,传递给Struts的Action,最后由Struts渲染成页面展示。 此外,为了提供更好的用户体验,分页通常会配合前端JavaScript库,如jQuery或AngularJS,实现动态加载(Ajax分页...

    使用分页控件(page_targetlib)实现分页

    `PageBean`用于封装每一页的数据,`PageParam`则用于设置分页参数,如当前页数、每页显示条数等。而`PageResult`则是返回给前端的分页结果,包含了总页数、总记录数等信息。 在实际使用中,首先需要创建一个`...

    使用spring框架,实现单表增删改查、条件查询和分页、文件上传

    在本文中,我们将深入探讨如何使用Spring框架,特别是Spring MVC和JdbcTemplate,来实现一个功能齐全的数据操作系统,包括单表的增删改查、条件查询以及分页功能,并涉及文件上传。对于初学者来说,这是一个很好的...

    SpringMVC+MySQL实现的分页小项目

    在这个项目中,可能会有一个`Page`类,用来封装每页的数据以及分页参数。 2. **视图(View)**:负责呈现用户界面,如JSP、Thymeleaf等。在分页场景下,视图需要展示当前页数据,并可能提供导航链接,让用户可以...

    Struts2分页(含mysql)

    List&lt;User&gt; users = jdbcTemplate.query(sql, params, new UserRowMapper()); return users; } private static class UserRowMapper implements RowMapper&lt;User&gt; { @Override public User mapRow(ResultSet rs,...

    比百度更强大的多种样式经典分页

    在这样的技术栈下实现分页,我们可以利用Spring的JdbcTemplate或者MyBatis等持久层工具来执行SQL查询,获取每页的数据。同时,Struts或Spring MVC负责处理用户的请求,根据用户的选择(如当前页码、每页数量等)动态...

    6-分页工具类1

    在Java中,我们创建了一个名为`PageUtil`的类,该类用于封装分页的相关参数。`PageUtil`类包含以下属性: 1. `pageNum`:当前页数,初始化为1。 2. `pageSize`:每页显示的记录数,默认为3。 3. `offset`:计算出的...

    easyframework-data:基于 Spring JdbcTemplate 的数据访问框架

    EasyFramework-Data 在Spring JdbcTemplate的基础上做了进一步封装,提供了以下主要特性: - **简单易用的API**:通过定义DAO接口,EasyFramework-Data自动生成实现,减少了代码量,使开发更快速。 - **参数绑定和...

Global site tag (gtag.js) - Google Analytics