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

 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. Java中的多线程Demo

    一.关于Java多线程中的一些概念 1.1 线程基本概念 从JDK1.5开始,Java提供了3中方式来创建.启动多线程: 方式一(不推荐).通过继承Thread类来创建线程类,重写run()方法作为线 ...

  2. DirectFB、Layer、Window、Surface之间关系

    层(Layers) 表示一块儿独立的图像缓冲区.大多数的嵌入式设备都有多个层.他们由硬件使用合适的alpha值来blending,然后显示. 表面 (Surface) 用来保存像素数据的保留内存区域. ...

  3. centeOS6.5 RPM方式安装MySQL5.6

    RPM方式安装MySQL5.6 a. 检查MySQL及相关RPM包,是否安装,如果有安装,则移除(rpm –e 名称) 1 [root@localhost ~]# rpm -qa | grep -i ...

  4. 机器学习笔记-1 Linear Regression with Multiple Variables(week 2)

    1. Multiple Features note:X0 is equal to 1 2. Feature Scaling Idea: make sure features are on a simi ...

  5. ASP.NET WebForm

    ASP.NET WEBFORM Aspx aspx文件(新建项→Web窗体) .在aspx中可以使用<%=表达式%>的方式在页面的当前位置输出表达式(表达式至少要用protected级别, ...

  6. 学习sql基础注入的方法

    作为一个初学者的我,经学习发现基础真的十分重要, 这个随笔是写给我自己的希望我能坚持住 当然,我也希望对其他人有点帮助 在sql注入的过程中,我越发感觉那些基础函数的重要性 其实我感觉sql注入其实就 ...

  7. 交换机进行VLAN划分

    一个交换机连接两个虚拟局域网(vlan10和vlan20),通过设置交换机,实现同一虚拟局域网内部相互通信,不同虚拟局域网内不能相互通信 (vlan 将整个网络划分多个广播域,vlan主机不受地理位置 ...

  8. 如何通过 WebP 自适应方案减少图片资源大小

    前言 我们知道,理想的网页应该在 1 秒内打开,而在页面的整体大小中,图片往往是所占比例最大的一部分(大约占到 60% 以上,更多了解请点击),也可以参照如下图所示.优化图片不仅可以加快页面显示,还能 ...

  9. 新鲜出炉的less与sass较量

    最近接触了Bootstrap,涉及到了LESS,CSS的预处理器使用最广泛的就是LESS和Sass,都是努力把CSS武装成为开发语言,让它从简单的描述性语言过渡到具有程序式特性的语言,主要的特性就是: ...

  10. 2017最新最稳定的彩票源码PHP+mysql 新增彩种+全新界面

    网站后台管理系统:新闻资讯系统 用户管理系统用户登录日志彩种规则说明玩法时间设置彩票期号管理足球对阵管理彩票方案撤单彩票出票管理开奖号码管理彩票方案查询彩票中奖查询 彩票追号查询服务支持中心财务中心管 ...