多条件查询处理

在检索的时候我们经常会遇到多条件查询的情况,这种情况有时候很棘手,下面是我的解决方法。

先举个例子:查询条件:登录名,ip地址。类别,登陆时间(startTime  endTime)

<div id="tb" style="padding:3px">
	<form id="searchForm">
		<span>登录名</span>
		<input id="loginName" style="border:1px solid #ccc" name="loginName" >
		<span>IP地址</span>
		<input id="ip" style="border:1px solid #ccc" name="ip">
		<span>类别</span>
		<select id="combobox" class="easyui-combobox" name="type" style="width:100px;">   
         <option >登录系统</option>   
         <option>退出系统</option>   
       </select>  

		<span>登陆时间</span>
		<input name="startTime" class="easyui-datetimebox" editable="false"  style="border:1px solid #ccc">-<input name="endTime" class="easyui-datetimebox" editable="false"  style="border:1px solid #ccc">

		<a href="#" class="easyui-linkbutton" iconCls="icon-search" onclick="doSearch()"  >检索</a>
		<a href="#" class="easyui-linkbutton" iconCls="icon-redo" onclick="clear()" >重置检索</a>
		</form>
	</div>

遇到这种情况的话很棘手。分析如下

1)在表单提交的时候验证,规定那个不能为空什么的,但是这样的话就会出现一个问题,有时候我们并不需要这个条件,也就是说某个条件可空可不空,每个条件都是独立的,可以组合条件查询,可以单独查询这样的话验证没有多大意义,违背了我们的初衷(单兵作战与团伙作案,哈哈哈)。

2)所以我们在后台接受这些条件,并根据条件写出查询语句,查询语句是重点。

1.如果没有条件的话:select * from User ;

2.有条件的话Select * from User where 条件1 and 条件2 and 条件3

这时候出现了问题,第一种情况你必须判断这5个条件同时为空,第二种更麻烦。

where 1=1闪亮登场,将1和2结合成一种情况。代码:

 public String findHql(String sort,String order,UserHistory model, String startTime,  String endTime){
	   String hql="from UserHistory uh where 1=1 ";
	   if(model.getLoginName()!=null){
		hql+=" and uh.loginName=‘"+model.getLoginName()+"‘";
	   }
	   if(model.getType()!=null){
		   hql+=" and uh.type=‘"+model.getType()+"‘";
	   }
	   if(model.getIp()!=null){
		   hql+=" and uh.ip=‘"+model.getIp()+"‘"; 
	   }
	   if(startTime.length()>0){
		   hql+=" and uh.loginTime>=‘"+startTime+"‘";  
	   }
	   if(endTime.length()>0){
		   hql+=" and uh.loginTime<=‘"+endTime+"‘";  
	   }
	   hql+=" order by "+sort+" "+order;
	return hql;
	   
   }	

说了这么多的废话无非就是为了说明where 1=1这个条件的重要性。尤其是在多条件查询时。

时间: 2024-11-10 14:48:18

多条件查询处理的相关文章

C# 将Access中时间段条件查询的数据添加到ListView中

C# 将Access中时间段条件查询的数据添加到ListView中 一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Columns集合中添加表头中的文字. 二.利用代码给ListView添加Item. 首先,ListView的Item属性包括Items和SubItems.必须先实例化一个ListIteView对象.具体如下: ListViewItem listViewItem=new ListViewItem(); l

php 多条件查询 例子

<hl>表单的多条件查询</h1> <form action="这个表.php" method="post"> <div> 请输入查询的名字:<input type="text" name="name" /> 请输入查询址性别:<input type="text" name="sex" /> <input ty

Django-rest-framework多条件查询/分页/多表Json

Django-rest-framework多条件查询/分页/多表Json django-rest-framework多条件查询需要覆写ListAPIView.get_queryset方法,代码示例: def get_queryset(self):     """     使用request.query_params实现多条件查询,也可以使用django filter ,较简单的     方法是在filter_fields中指定要过滤的字段,但只能表示等值,不灵活,灵活的方式是

基于Solr的HBase多条件查询测试

转自:http://www.cnblogs.com/chenz/articles/3229997.html 背景: 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询.HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级的快速检索,对于多字段的组合查询却无能为力.针对HBase的多条件查询也有多种方案,但是这些方案要么太复杂,要么效率太低,本文只对基于Solr的HBase多条件查询方案进行测试和验证. 原理: 基于Solr的HBase多条件查询原理很简单,将HBas

PHP 多条件查询之简单租房系统

注:这里只展示多条件查询页面,其余的增删该页面略过 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ht

关键字查询和多条件查询

0616DBDA.class.php 代码 <?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/6/16 * Time: 11:23 */ class DBDA { public $host="localhost";//服务器地址 public $uid="root" ;//用户名 public $pwd="";//密码 public $dbconnect;

PHP-----多条件查询

在开发网页时,用谷歌和火狐浏览器,会比较好.IE浏览器不是太好用. 多条件查询 拿汽车表car,来做例子. 先把car表查出来,用表格来显示,在加一些查询的条件进去. 第一步:把car表查出来,用表格来显示 <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代号</td> <td

2016/3/13 七种查询 (普通查询 条件查询 排序查询 模糊查询 统计查询 分组查询 分页查询 )

一句话概括的话,SQL作为结构化查询语言,是标准的关系型数据库通用的标准语言: T-SQL 是在SQL基础上扩展的SQL Server中使用的语言 1,普通查询 #查询Info表中的所有列 select * from Info #查询Info表中的Name和Code列 select Name,Code from Info 2,条件查询 关键字where #查询Info表的左右列 限定范围 列名为p001 select * from Info where 列名="p001" #查询条件之

ThinkPHP中 按条件查询后列表显示

最近在项目中遇到了需要根据下拉框的条件筛选出符合条件的数据,然后进行列表显示的问题. 在ThinkPHP中进行列表显示的传统过程:通过在后台控制器中查询出数据,然后通过$this->assign()来实现控制器数据向页面的传递,在页面中通过<foreach>或<volist>标签来进行数据的解析,(注:在通过标签进行数据的解析时需要以“$”符号的形式). 在进行条件查询时,需要通过jquery中ajax的方式将条件GET到后台控制器,后台控制器中接收数据,然后根据条件进行查询

关于不定项参数的查询方法(多条件查询)

如果要进行一个多条件的查询,但又不知道用户到底对哪些条件进行了设定,所以,我们在编辑一个多条件查询的时候,会遇到这样的问题. 那么我们可以通过以下的方式进行解决: 假设一个场景-->       如下图:其中Customer.class 包含了以下的所有属性 开始解决问题: 那么我们在CustomerDao中可以这样进行编写: public class CustomerDao{ private QueryRunner qr = new TxQueryRunner(); //TxQueryRunn