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

 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. crash部分命令用法

    Set set [pid | taskp | [-c cpu] | -p] | [crash_variable [setting]] | -v 1.设置要显示的内容,内容一般以进程为单位. Set p ...

  2. poj2398计算几何叉积

    Mom and dad have a problem: their child, Reza, never puts his toys away when he is finished playing ...

  3. 使用JavaEE的ServerAuthModule模块和web.xml进行相应配置,实现对用户的权限控制

    ServerAuthModule这里不细说,可以自行百度. 重点在注释: <!-- 声明用于安全约束的角色 --> <security-role> <role-name& ...

  4. iOS 制作自动打包脚本 Xcode8.3.2

    本文包含以下内容: 前言 1.shell脚本的编写 2.xcodebuild命令 3.完整的可用示例 参考资料 前言 做iOS开发,打包APP是比较频繁的事情,每次都手动去配置一堆东西确实是比较乏味. ...

  5. 使用HTMLParser爬取标签内容

    以此网站为例 import urllib.request from html.parser import HTMLParser from html.entities import name2codep ...

  6. Oracle的正则函数之regexp_like

    前言:最近接到一个让人肝疼的需求,用到了正则表达式去匹配字符串,顺便巩固一下oracle几个正则表达式的用法 例子: 找出为带小数点后两位的数字,不论正负.比如3.12,-4.56这样的.而3.145 ...

  7. 浅论Javascript在汽车信号测试中的应用

    起因 上周老板又给了我这个车辆工程毕业的码农一份工作: 要我写一个测试台架出来. 我先简单的分析了测试台架的几种典型的工况: 1.发送一个CAN信号,测试能否查到. 2.发送一个信号,是否能在规定时间 ...

  8. 【转】解决response.AddHeader("Content-Disposition", "attachment; fileName=" + fileName) 中文显示乱码

    如果fileName为中文则乱码.解决办法是 方法1: response.setHeader("Content-Disposition", "attachment; fi ...

  9. winform无边框窗口拖动

    无边框的窗口想拖动,只需要在置顶的容器上添加对应的mousedown 和 mousemove 事件就可以实现了.代码如下: //拖动窗口 private Point mPoint = new Poin ...

  10. Gitlab使用Webhook实现Push代码自动部署

    1.Jenkins 安装完成以后,首先我们在Jenkins中需要安装一下,Gitlab Hook Plugin 插件: 2.插件安装完成我们创建任务,在任务重构建触发器下获取回调URL: 注意: 注意 ...