1.JdbcTemplateExtend .java
package rms.pub.main.web.test;
import java.util.List;
import java.util.Map;
import javax.sql.*;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
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> queryForListPage(String sql, int startRow, int rowsCount)
throws DataAccessException {
return queryForListPage(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> queryForListPage(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
package rms.pub.main.web.test;
import java.sql.*;
import java.util.*;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.util.Assert;
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;
}
}
分享到:
相关推荐
`JdbcTemplateExtend.java`可能扩展了`JdbcTemplate`类,添加了对游标分页的支持。它可能包含了一个或多个方法,用于封装上述步骤,使代码更加简洁易用。 在实际应用中,我们可能还需要考虑并发和性能优化,例如,...
总结起来,实现Oracle + jdbcTemplate + Spring + Java + Flex的分页查询,主要涉及以下步骤: 1. 在Oracle中创建存储过程,处理分页逻辑和计数。 2. 使用Spring的jdbcTemplate调用存储过程,处理输入输出参数。 3. ...
8. **性能优化**:JDBCTemplate支持批处理、分页查询等优化技巧,可以根据需求进行配置。 博客链接中提到的内容可能详细解释了如何配置和使用这些组件,并提供了实际的代码示例。通过这个项目,你可以学习到如何...
总结起来,这个Java分页代码设计简洁,具有很好的灵活性,可以根据不同的应用场景进行扩展。它通过`JdbcTemplate`与数据库交互,既可以一次性加载数据后分页,也可以按需从数据库获取数据,适应性强。同时,通过`...
例如,你可以使用Spring的JdbcTemplate或者MyBatis这样的ORM框架来简化数据库操作。 在你提供的描述中提到了"unit",这可能指的是JUnit,一个用于单元测试的Java框架。在开发过程中,进行单元测试是非常重要的,它...
在IT行业中,SpringMVC和MySQL是两个非常重要的技术组件,它们经常被用来构建高效、可扩展的企业级Web应用程序。SpringMVC作为Spring框架的一部分,主要用于处理HTTP请求和响应,而MySQL则是一种广泛使用的开源关系...
该插件的核心理念是将分页逻辑与业务逻辑分离,使页面显示和数据处理更加清晰,有利于代码维护和扩展。 ### 2. 工作原理 JspPageController通过接收前端发送的请求参数,如当前页码、每页显示数量等,来计算出数据...
Spring JDBC模块中的`JdbcTemplate`或`NamedParameterJdbcTemplate`可以方便地实现分页查询,通过设置页码和每页大小来获取所需数据。 **Struts2** Struts2作为MVC框架,负责处理用户的请求并展示结果。它提供了...
return jdbcTemplate.query(sql, new Object[]{pageSize, pageSize * (pageNum - 1)}, new UserRowMapper()); } ``` 3. **控制器(Controller)**:在Struts的动作类(Action)中,处理用户的请求,计算当前页数...
同时,为了提高代码的可维护性和重用性,可以考虑使用更高级的DAO设计模式,比如工厂模式或Spring的JdbcTemplate。 在整合jQuery框架时,可以利用其强大的AJAX功能,使分页操作无刷新,提供更流畅的用户体验。例如...
- **分页查询**:内置分页查询支持,方便获取数据库记录的指定部分。 - **事务管理**:集成Spring的事务管理,确保数据一致性。 - **数据验证**:提供了基本的数据验证机制,可以在插入或更新数据前检查其有效性。...
在分页功能的实现上,开发者通常会结合Hibernate的Criteria API或HQL,配合Spring的JdbcTemplate或NamedParameterJdbcTemplate,来执行带有LIMIT和OFFSET子句的SQL,从而获取指定页码的数据。前端则可以通过AJAX或者...
- **Maven插件**:扩展Maven功能,如编译(maven-compiler-plugin)、测试(maven-surefire-plugin)等。 - **依赖管理**:Maven自动解决库依赖,避免版本冲突。 4. **数据库相关**: - **user.sql**:包含创建...
数据库连接池(常用的4-5个)、分页查询(oracle,mysql,sqlserver等)、数据转码(空值、特定、列名等)、数据导出(Pdf,excel,html,rtf,xml等)、日志处理、启动jar加载校验机制、扩展Hib、JdbcTemplate等等...
通过灵活运用JdbcTemplate和Gson,我们可以构建出强大且可扩展的查询系统,满足用户的各种查询需求。在实际开发中,还应注意安全性和性能优化,例如使用预编译的PreparedStatement来防止SQL注入,并考虑分页、排序等...
**SpringBoot整合Hive-JDBC详解** 在大数据处理领域,Hadoop生态中的Hive作为一个数据仓库工具,常常用于...这个简单的示例展示了基本的查询功能,实际应用中可以根据需求扩展更多的操作,例如插入、更新、删除等。
在业务逻辑中,可以使用`@Autowired`的`JdbcTemplate`或`JpaRepositories`来进行数据操作。 总结起来,这个SpringBoot项目展示了如何构建一个基于YML配置的全功能Web应用,集成了ORM框架Mybatis、日志系统Logback、...
在Spring中集成Hibernate,可以使用Spring的JdbcTemplate或HibernateTemplate,使得数据库操作更加简洁和高效,同时Spring还能够帮助管理Hibernate的Session。 Ajax,即异步JavaScript和XML,是前端技术,它让网页...
1. 分页插件:引入Mybatis-Plus或PageHelper实现高效分页查询。 2. 日志管理:集成Logback或Log4j,记录系统日志,便于问题排查。 3. 缓存策略:考虑引入Redis或Memcached实现数据缓存,提高系统性能。 4. 异步任务...
通常,Spring与Struts2结合时,会利用Spring的JdbcTemplate或者MyBatis等ORM(Object-Relational Mapping)框架来处理数据库交互。这些工具能简化SQL语句的编写,使得代码更加整洁。在这个系统中,可能有一个名为...