Struts+jdbc+分页 实例
根据项目里分页实例,带有注解。
package org.tarena.netctoss.dao.impl; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; import org.tarena.netctoss.dao.AccountDAO;
import org.tarena.netctoss.pojo.Account;
import org.tarena.netctoss.util.DBUtil; public class AccountDAOImpl implements AccountDAO { public List<Account> findByParameters(
int page,int pageSize,
String idCartNo, String realName,
String loginName, String status) throws Exception {
StringBuffer sql = new StringBuffer(
"select * from ACCOUNT ");
//判断是否为全部
if("-1".equals(status)){
sql.append(" where 1=1 ");
}else{
sql.append(" where STATUS = ? ");
}
// 判断是否追加身份证条件
if (idCartNo != null && !"".equals(idCartNo)) {
sql.append(" and IDCARD_NO like ? ");
}
// 判断是否追加姓名条件
if (realName != null && !"".equals(realName)) {
sql.append(" and REAL_NAME like ? ");
}
// 判断是否追加登录名条件
if (loginName != null && !"".equals(loginName)) {
sql.append(" and LOGIN_NAME like ? ");
}
// System.out.println(sql);
//追加分页查询的嵌套
StringBuffer pageSQL = new StringBuffer("");
pageSQL.append("select * from ");
pageSQL.append(" ( ");
pageSQL.append(" select a.*,rownum rn ");
pageSQL.append(" from ( ");
pageSQL.append(sql);//sql查询语句
pageSQL.append(" ) a ");
pageSQL.append(" where rownum<=? ");
pageSQL.append(" ) ");
pageSQL.append(" where rn>=? ");
System.out.println(pageSQL);
try {
// 执行sql查询
Connection con = DBUtil.openConnection();
PreparedStatement pst = con.prepareStatement(pageSQL.toString());
// 设置查询参数
List<Object> params = new ArrayList<Object>();
//判断是否追加状态参数
if(!"-1".equals(status)){
params.add(status);
}
// 判断是否追加身份证参数
if (idCartNo != null && !"".equals(idCartNo)) {
params.add("%"+idCartNo+"%");
}
// 判断是否追加姓名条件
if (realName != null && !"".equals(realName)) {
params.add("%"+realName+"%");
}
// 判断是否追加登录名条件
if (loginName != null && !"".equals(loginName)) {
params.add("%"+loginName+"%");
}
//追加分页查询参数
int begin = (page-1)*pageSize+1;
int end = page*pageSize;
params.add(end);//结束索引
params.add(begin);//开始索引
System.out.println(params);
// 循环将params集合参数给sql语句设置
for (int i = 0; i < params.size(); i++) {
pst.setObject(i + 1, params.get(i));
}
// 执行查询
ResultSet rs = pst.executeQuery();
List<Account> list = new ArrayList<Account>();
while (rs.next()) {
Account account = new Account();
account.setId(rs.getInt("ID"));
account.setIdCardNo(rs.getString("IDCARD_NO"));
account.setRealName(rs.getString("REAL_NAME"));
account.setLoginName(rs.getString("LOGIN_NAME"));
account.setStatus(rs.getString("STATUS"));
list.add(account);
}
return list;
} catch (Exception ex) {
ex.printStackTrace();
throw ex;
} finally {
DBUtil.closeConnection();
}
} public static void main(String[] args) throws Exception{
AccountDAO dao = new AccountDAOImpl();
List<Account> list = dao.findByParameters(
2,3,null, null, null, "1");
for(Account account : list){
System.out.println(account.getId()+" "+account.getIdCardNo()+" "+account.getRealName());
}
} }
Struts+jdbc+分页 实例的更多相关文章
- Jsp分页实例---真分页
网页的分页功能的实现比较简单,实现方法也多种多样. 今天总结一个简单的Jsp真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给 ...
- RDIFramework.NET 中多表关联查询分页实例
RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...
- php分页实例附代码
一个典型的PHP分页实例代码分享,学习php的朋友肯定用得到,主要是了解思路: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...
- JDBC 程序实例小练习
JDBC 程序实例问题 编程实现如下功能:在数据库中建立一个表,表名为student,其结构为学号.姓名.性别.年龄.英语.JavaSE程序设计.初级日语.总分,在表中输入多条记录. 学生的总分信息, ...
- js分页实例
js分页实例 案例1 1.js_pageusers.html <!DOCTYPE html> <html> <head> <title>js_pageu ...
- NHibernate初学三之条件查询(Criteria Queries)与AspNetPager分页实例
NHibernate除了SQL与HQL两种查询操作外,还有一种就是条件查询Criteria,本文将从网上整理一些Criteria的理论及小实例,最后通过一个结合AspNetPager分页来加深理解,必 ...
- CSS 分页实例
CSS 分页实例 一.简单分页 如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航. 以下实例演示了如何使用 HTML 和 CSS 来创建分页: <!DOCTYPE html> ...
- jdbc分页
分页是一个被讲到烂掉的话题,今天我再拾起来踹几脚吧 (Hibernate的分页做得很好很强大,用的人都知道 ,这个就不用再说了) 1.为什么要分页? 首先是数据量太大会影响查询和传输的性能,关键 ...
- ThinkPHP分页实例
ThinkPHP分页实例 (2014-09-20 15:34:36) 很多人初学thinkphp时,不太熟悉thinkphp的分页使用方法,现在将自己整理的分页方法分享下,有需要的朋友可以看看. ...
随机推荐
- crash部分命令用法
Set set [pid | taskp | [-c cpu] | -p] | [crash_variable [setting]] | -v 1.设置要显示的内容,内容一般以进程为单位. Set p ...
- poj2398计算几何叉积
Mom and dad have a problem: their child, Reza, never puts his toys away when he is finished playing ...
- 使用JavaEE的ServerAuthModule模块和web.xml进行相应配置,实现对用户的权限控制
ServerAuthModule这里不细说,可以自行百度. 重点在注释: <!-- 声明用于安全约束的角色 --> <security-role> <role-name& ...
- iOS 制作自动打包脚本 Xcode8.3.2
本文包含以下内容: 前言 1.shell脚本的编写 2.xcodebuild命令 3.完整的可用示例 参考资料 前言 做iOS开发,打包APP是比较频繁的事情,每次都手动去配置一堆东西确实是比较乏味. ...
- 使用HTMLParser爬取标签内容
以此网站为例 import urllib.request from html.parser import HTMLParser from html.entities import name2codep ...
- Oracle的正则函数之regexp_like
前言:最近接到一个让人肝疼的需求,用到了正则表达式去匹配字符串,顺便巩固一下oracle几个正则表达式的用法 例子: 找出为带小数点后两位的数字,不论正负.比如3.12,-4.56这样的.而3.145 ...
- 浅论Javascript在汽车信号测试中的应用
起因 上周老板又给了我这个车辆工程毕业的码农一份工作: 要我写一个测试台架出来. 我先简单的分析了测试台架的几种典型的工况: 1.发送一个CAN信号,测试能否查到. 2.发送一个信号,是否能在规定时间 ...
- 【转】解决response.AddHeader("Content-Disposition", "attachment; fileName=" + fileName) 中文显示乱码
如果fileName为中文则乱码.解决办法是 方法1: response.setHeader("Content-Disposition", "attachment; fi ...
- winform无边框窗口拖动
无边框的窗口想拖动,只需要在置顶的容器上添加对应的mousedown 和 mousemove 事件就可以实现了.代码如下: //拖动窗口 private Point mPoint = new Poin ...
- Gitlab使用Webhook实现Push代码自动部署
1.Jenkins 安装完成以后,首先我们在Jenkins中需要安装一下,Gitlab Hook Plugin 插件: 2.插件安装完成我们创建任务,在任务重构建触发器下获取回调URL: 注意: 注意 ...