根据项目里分页实例,带有注解。

 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+分页 实例的更多相关文章

  1. Jsp分页实例---真分页

    网页的分页功能的实现比较简单,实现方法也多种多样. 今天总结一个简单的Jsp真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给 ...

  2. RDIFramework.NET 中多表关联查询分页实例

    RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...

  3. php分页实例附代码

    一个典型的PHP分页实例代码分享,学习php的朋友肯定用得到,主要是了解思路: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...

  4. JDBC 程序实例小练习

    JDBC 程序实例问题 编程实现如下功能:在数据库中建立一个表,表名为student,其结构为学号.姓名.性别.年龄.英语.JavaSE程序设计.初级日语.总分,在表中输入多条记录. 学生的总分信息, ...

  5. js分页实例

    js分页实例 案例1 1.js_pageusers.html <!DOCTYPE html> <html> <head> <title>js_pageu ...

  6. NHibernate初学三之条件查询(Criteria Queries)与AspNetPager分页实例

    NHibernate除了SQL与HQL两种查询操作外,还有一种就是条件查询Criteria,本文将从网上整理一些Criteria的理论及小实例,最后通过一个结合AspNetPager分页来加深理解,必 ...

  7. CSS 分页实例

    CSS 分页实例 一.简单分页 如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航. 以下实例演示了如何使用 HTML 和 CSS 来创建分页: <!DOCTYPE html> ...

  8. jdbc分页

    分页是一个被讲到烂掉的话题,今天我再拾起来踹几脚吧 (Hibernate的分页做得很好很强大,用的人都知道 ,这个就不用再说了) 1.为什么要分页?    首先是数据量太大会影响查询和传输的性能,关键 ...

  9. ThinkPHP分页实例

    ThinkPHP分页实例 (2014-09-20 15:34:36)   很多人初学thinkphp时,不太熟悉thinkphp的分页使用方法,现在将自己整理的分页方法分享下,有需要的朋友可以看看. ...

随机推荐

  1. 进程间通信系列 之 socket套接字实例

    进程间通信系列 之 概述与对比   http://blog.csdn.net/younger_china/article/details/15808685  进程间通信系列 之 共享内存及其实例   ...

  2. 开始使用gentoo linux——gentoo安装笔记(上)

    gentoo linux安装笔记(上) 家里有一台破旧的富士通笔记本,08年至今质量依然杠杠的,但是性能已经不能和现代超极本同日而语,装上了ubuntu更是不敢恭维,别提gnome和kde的linux ...

  3. Mysql net start mysql启动,提示发生系统错误 5 拒绝访问,原因所在以及解决办法

    1,Mysql net start mysql启动,提示发生系统错误 5 拒绝访问 在dos下运行net  start MySQL 不能启动mysql!提示发生系统错误 5:拒绝访问!切换到管理员模式 ...

  4. java中的GC(gabage collection)如何工作

    1. “引用记数(reference counting)”是一种简单但速度很慢的垃圾回收技术.每个对象都含有一个引用记数器,当有引用连接至对象时,引用计数加1.当引用离开作用域或被置 为null时,引 ...

  5. 欲练JS,必先攻CSS——前端修行之路

    今天我讲的主题是css,具体聊一下我大概的css学习历史,分享一些干货,希望这次分享对大家有所启发和帮助. 个人的css历史: 说说自己的css学习的历史,12年,当时是老师手把手1对1教我div+f ...

  6. 运用三角不等式加速Kmeans聚类算法

    运用三角不等式加速Kmeans聚类算法 引言:最近在刷<数据挖掘导论>,第九章, 9.5.1小节有提到,可以用三角不等式,减少不必要的距离计算,从而达到加速聚类算法的目的.这在超大数据量的 ...

  7. 镜像的缓存特性 - 每天5分钟玩转 Docker 容器技术(14)

    上一节我们学习了镜像的分层结构,今天讨论镜像的缓存特性. Docker 会缓存已有镜像的镜像层,构建新镜像时,如果某镜像层已经存在,就直接使用,无需重新创建. 举例说明.在前面的 Dockerfile ...

  8. JavaScript中的DOM函数与关键字汇总

    DOM节点的属性 属性 描述 attributes数组 获取某个节点的所有属性子节点(实际是一个NodeList对象) childNodes数组    获取某个节点的所有子节点,可以按数组方式访问子节 ...

  9. POJ2635-The Embarrassed Cryptographer 大数求余

    题目链接:http://poj.org/problem?id=2635 题目分析: http://blog.csdn.net/lyy289065406/article/details/6648530

  10. 通过vmware 启动cloudera-quickstart-vm-5.10.0-0-vmware.zip镜像无法启动。

    解压cloudera-quickstart-vm-5.10.0-0-vmware.zip中找到cloudera-quickstart-vm-5.10.0-0-vmware.vmx文件打开注释点#msg ...