带查询条件的分页实例
来源:互联网 发布:snmp trap 端口 编辑:程序博客网 时间:2024/05/19 11:19
1、配置bean文件
2、建立DBUtilsTemplate类
public class DBUtilsTemplate {
private DataSource dataSource;
private QueryRunner queryRunner;
private static final Log LOG = LogFactory.getLog(DBUtilsTemplate.class);
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public QueryRunnergetQueryRunner() {
queryRunner = new QueryRunner(dataSource);
return queryRunner;
}
}
3、在BasicDao中实现通用的查询方法
// queryWhere="where name=? and age=?"
publicQueryResult<T> pageQuery(int startindex,int pagesize,StringqueryWhere,Object queryParams[]){
QueryResult<T>queryResult = new QueryResult<T>();
try{
List<T>list = null;
Longtotalrecord = null;
QueryRunnerqueryRunner = db.getQueryRunner();------------>这里实例化new QueryRunner(datasource)的那个类DBUtilsTemplate,是交给spring中的bean打理了,只需在该类中注册DBUtilsTemplate:db就可以了,就是在这样子:
//Stringsql = "select * from customer where limit "
if(startindex<0|| pagesize<0){
//不想分页
if(queryWhere==null){
//所有数据
Stringsql = "select * from "+ getCurClass().getSimpleName();
list= (List<T>) queryRunner.query(sql, new BeanListHandler(getCurClass()));
sql= "select count(*) from " + getCurClass().getSimpleName();
totalrecord= (Long) queryRunner.query(sql, new ScalarHandler());
}else{
//获取带条件的数据
Stringsql = "select * from " + getCurClass().getSimpleName() + queryWhere;
list= (List<T>) queryRunner.query(sql, queryParams, newBeanListHandler(getCurClass()));
sql= "select count(*) from " + getCurClass().getSimpleName() +queryWhere;
totalrecord= (Long) queryRunner.query(sql, queryParams, new ScalarHandler());
}
}else{
//想分页
if(queryWhere==null){
//获取无条件分页(所有数据的分页数据)
System.out.println("想分页--------不带查询条件不带查询条件不带查询条件不带查询条件");
Stringsql = "select * from " +getCurClass().getSimpleName() +" limit ?,?";
Objectparams[] = {startindex,pagesize};
list= (List<T>) queryRunner.query(sql, params, newBeanListHandler(getCurClass()));
sql= "select count(*) from " + getCurClass().getSimpleName();
totalrecord= (Long) queryRunner.query(sql, new ScalarHandler());
}else{
//有条件,并且分页 // queryWhere="where name=? and age=?"
Stringsql = "select * from " + getCurClass().getSimpleName() + queryWhere +" limit ?,?";
Objectparams[] = new Object[queryParams.length+2];
for(inti=0;i<queryParams.length;i++){
params[i]= queryParams[i];
}
System.out.println("11111111111111111111111111"+startindex+"...."+pagesize);
params[params.length-2]= startindex;
params[params.length-1]= pagesize;
list= (List<T>) queryRunner.query(sql, params, newBeanListHandler(getCurClass()));
sql= "select count(*) from " + getCurClass().getSimpleName() +queryWhere;
totalrecord= (Long) queryRunner.query(sql, queryParams, new ScalarHandler());
}
}
queryResult.setList(list);
queryResult.setTotalrecord(totalrecord.intValue());
returnqueryResult;
}catch(Exception e) {
thrownew RuntimeException(e);
}
}
4、创建将查询条件封装成Bean的类
/*
* To change this license header, chooseLicense Headers in Project Properties.
* To change this template file, choose Tools |Templates
* and open the template in the editor.
*/
packagecom.scau.paper.model;
import java.util.ArrayList;
importjava.util.Calendar;
importjava.util.List;
/**
*
* @author didi
*/
public classGroupsQueryFormBean {
private String TTeacherByMasterid;
private String TTeacherByScretid;
private String TProjectsetting;
private String groupno;
public String getTTeacherByMasterid() {
return TTeacherByMasterid;
}
public void setTTeacherByMasterid(StringTTeacherByMasterid) {
this.TTeacherByMasterid =TTeacherByMasterid;
}
public String getTTeacherByScretid() {
return TTeacherByScretid;
}
public void setTTeacherByScretid(StringTTeacherByScretid) {
this.TTeacherByScretid =TTeacherByScretid;
}
public String getTProjectsetting() {
return TProjectsetting;
}
public void setTProjectsetting(StringTProjectsetting) {
this.TProjectsetting = TProjectsetting;
}
public String getGroupno() {
return groupno;
}
public void setGroupno(String groupno) {
this.groupno = groupno;
}
public WhereAndParam buildSqlWhere(){
StringBuffersb = new StringBuffer();
List list =new ArrayList();
sb.append("where 1=1 ");
if(this.TTeacherByMasterid!=null&& !this.TTeacherByMasterid.trim().equals("")){
sb.append("andtgroup.TTeacherByMasterid.workno like ? ");
list.add("%"+ TTeacherByMasterid + "%");
}
if(this.TTeacherByScretid!=null&& !this.TTeacherByScretid.trim().equals("")){
sb.append("andtgroup.TTeacherByScretid.workno like ? ");
list.add("%"+ TTeacherByScretid + "%");
}
if(this.TProjectsetting!=null&& !this.TProjectsetting.trim().equals("")){
sb.append("andtgroup.TProjectsetting.year like ? ");
list.add("%"+TProjectsetting + "%");
}
if(this.groupno!=null&& !this.groupno.trim().equals("")){
sb.append("andtgroup.groupno like ? ");
list.add("%"+groupno + "%");
}
Stringwhere = sb.toString(); // where 1=1 andname=? and cellphone=?
Objectparams[] = list.toArray();
WhereAndParamwp = new WhereAndParam();
wp.setParams(params);
wp.setWhere(where);
System.out.println("在GroupsQueryFormBean中,组装出来的条件查询语句为----" + wp.getWhere());
return wp;
}
}
5、写查询结果页面
!!!!!!
6、组装SQL语句查询--à脱离HQL-àDBUtils多表查询
==================================================出现问题=============================================================
BeanListHandler与BeanHandler
<c:forEach items="${list}" var="customer">
<a href="javascript:void(0)" onclick="del(${customer.id})">删除</a>
import java.util.UUID;-----------自动生成id
---------------------------------------
导入commons-beanutils-1.8.0.jar和commons-logging
将注册的用户信息包装到RegisterFormBean类里
===========================分页================================
1、建立好三个类PageInfo、QueryResult、PageBean -=
=============================查询分页===============================
//请求参数被封装在CustomerQueryFormBean
CustomerQueryFormBean customerQueryFormBean = WebUtil.request2Bean(request, CustomerQueryFormBean.class);
CustomerQueryFormBean用于封装查询用户的属性--------------组装好的查询语句(带查询参数)
//查询数据库的一条完整查询语句
CustomerQueryFormBean.WhereAndParam wap = customerQueryFormBean.buildSqlWhere();
//包装好分页参数
PageInfo pageInfo = WebUtil.request2Bean(request, PageInfo.class);
//分页既待条件查询
PageBean pageBean = customerService.pageQueryByWhere(wap,pageInfo);
【
public PageBean pageQueryByWhere(CustomerQueryFormBean.WhereAndParam wap, PageInfo pageInfo) {
QueryResult queryResult = customerDao.pageQuery(pageInfo.getStartindex(), pageInfo.getPagesize(), wap.getWhere(), wap.getParams());
PageBean pageBean = new PageBean();
pageBean.setCurrentpage(pageInfo.getCurrentpage());
pageBean.setList(queryResult.getList());
pageBean.setPagesize(pageInfo.getPagesize());
pageBean.setTotalrecord(queryResult.getTotalrecord());
return pageBean;
}
======================================================================================
//有条件,并且分页 // queryWhere="where name=? and age=?"
String sql = "select * from customer " + queryWhere + " limit ?,?";
Object params[] = new Object[queryParams.length+2];
for(int i=0;i<queryParams.length;i++){
params[i] = queryParams[i];
}
System.out.println("11111111111111111111111111"+startindex+"...."+pagesize);
params[params.length-2] = startindex;
params[params.length-1] = pagesize;
list = (List) queryRunner.query(sql, params, new BeanListHandler(Customer.class));
sql = "select count(*) from customer " + queryWhere;
totalrecord = (Long) queryRunner.query(sql, queryParams, new ScalarHandler());
】
---------------------------------------条件的查询分页实现-------------------------------------------
1、只是分页显示页面
jsp请求页面分页参数---->分页信息Bean----->调用查询方法(分页信息)
2、又要分页又要查询的显示信息
jsp页面查询信息通过隐藏域的形式传查询参数给control,还有页面参数信息
------------->查询信息封装成查询表单Bean----------->将查询表单bean中的查询参数组装成查询的SQL语句
------------->页面封装成bean------->带着页面bean和查询表单bean去查询信息返回页面
======================================================================================
------------------------------DBUtil多表查询---------------------------------------------
select a.* from t_group a left join t_teacher b on a.masterid=b.id where (b.workno=?)
----------------------------------要继续解决的问题-------------------------------------------
为什么要双击才可以?
功能对应不同的SQL语句还是还能继续封装?
设置:当页面大小等于总记录数和当前页为最后一页时,下一页的链接不能点击
- 带查询条件的分页实例
- 带查询条件的分页
- 带条件的分页查询
- YII带查询条件的分页问题解决
- hibernate中带查询条件的分页
- ExtJs3带条件的分页查询的实现
- ExtJs3带条件的分页查询的实现
- 带查询条件的Mybatis分页的实现
- ThinkPHP的使用(三)带查询条件的分页
- Struts2+Hibernate+Spring带条件的分页查询
- 十二:Page分页加带过滤器的按条件查询
- Hibernate实现不带条件的简单分页查询
- ExtJs带条件查询分页问题的解决方法
- dhtmlxGrid分页查询,条件查询实例
- 条件查询存储过程,带分页
- ThinkPHP 数据分页 带查询条件
- ExtJs中分页时带查询条件
- SSH实现带条件查询分页功能
- java实现二维码生成的几个方法
- Git 配置学习
- JDK在MAC OS X下的路径设置
- 下载和配置php
- linux网络编程入门
- 带查询条件的分页实例
- MFC添加背景图片方法
- 细说Unity3D——移动平台动态读取外部文件全解析(转)
- __init__.py文件的作用
- 西安市南郊含光路得了皮炎去哪里治疗
- VMWare ESXi 提示 “Failed to open disk scsi0:0: Unsupported and/or invalid disk type 7”
- Android双击返回键退出
- easyui tabs页带刷新按钮,页面错乱问题
- 队列