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

 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. SQL*Plus快速入门

    连接数据库sqlplus hr@\"//mymachine.mydomain:port/MYDB\" --连接到MYDB数据库的一个HR数据集里sqlplus hr@MYDB -- ...

  2. Docker - 容器互联

    容器互联 通过docker run命令的--link参数可以让容器之间通过连接(linking)系统进行交互. 参数格式:--link name:alias ,name是要链接的容器名称, alias ...

  3. JS执行效率与性能提升方案

    如果是追加字符串,最好使用s+=anotherStr操作,而不是要使用s=s+anotherStr.如果要连接多个字符串,应该少使用+=,如 s+=a;s+=b;s+=c;应该写成s+=a + b + ...

  4. java实现简单计算器

    首先利用字符串数组保存计算器上的按钮的标签名 private final String[] str = {"7","8","9"," ...

  5. 使用windows桌面ftp上传文件到linux服务器

    首先在linux服务器上安装ftp [root@host2 test]#yum -y install ftp vsftpd [root@host2 test]#service vsftpd start ...

  6. Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源

    熟悉Entity Framework应该对以下图片不陌生,他就是ADO.NET实体数据模型向导:可以将数据库的表自动生成模型类,或者创建Code First的模型文件. 但是这个模型向导默认只显示微软 ...

  7. CollectioView滚动到指定section的方法

    项目中的需求:collectionView顶部有一个scrollView组成的标签,点击标签,让collectionView滚动到指定的行,滚动collectionView自动切换到顶部指定的标签 实 ...

  8. Nginx教程(二) Nginx虚拟主机配置

    Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主 ...

  9. rowid去重(删除表的重复记录)

    -- 构造测试环境SQL> create table andy(id int,name varchar2(10));Table created.SQL>insert into andy v ...

  10. 简单的用jQuery做遮罩效果

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...