关于通过easyui对mysql的模糊查询以及按时间段查询的个人见解

建表是使用easyui的datagrid来显示查询mysql的结果,系统是基于SSH框架建立

先来张图看看界面

关于通过easyui对mysql的模糊查询以及按时间段查询的个人见解_第1张图片

 

1、自定义easyui datagrid的工具栏

查询条件:           日期:      到    查询
修改订单 删除订单 选择多个商品


 

 

2、搜索按钮的代码

function searchOrder(){
	//$.messager.alert('提示',"search","info");
	var content = $.trim($('#content').val());		//获取搜索框的内,$.trim()可以消除前后空格
	var begindate = $('#begindate').datebox('getValue');	//获取查询的起始日期
	var enddate = $('#enddate').datebox('getValue');	//获取查询的终止日期
	if(content=="请输入单据号或客户姓名"){content=null;}	//当没有输入内容时设为null
	if(begindate==""){begindate=null;}
	if(enddate==""){enddate=null;}
	else{enddate=enddate+" 23:59:59";}	
	//$.messager.alert('提示',content+"&"+begindate+"&"+enddate,"info");
	$('#tbQueryList').datagrid('reload',{		//重新载入datagrid
		'criteria.rows':16,			//设定1页的行数					
		'criteria.currentPage':1,			//设定显示第几页
		'criteria.strVal1':content,			
		'criteria.strVal2':begindate,
		'criteria.strVal3':enddate
	});
}

 

说明1:

else{enddate=enddate+" 23:59:59";}

上面这行代码是为了防止在mysql查询时遗失截止日期当天的订单
例如:在mysql查询以下语句

SELECT	SALES_ID,wms_client.CLIENT_ID,SALES_NUMBER,CLIENT_NAME,SALES_DATE,ORDER_TYPE,ORDER_STATUS,
	AMOUNT_COLLECTION,AMOUNT_ADVANCE,ACCOUNT_DATE,NOTES
FROM	wms_sales,wms_client
WHERE	wms_sales.CLIENT_ID = wms_client.CLIENT_ID
	AND SALES_DATE>='2013-01-01' 
	AND SALES_DATE<='2013-02-01'

上面SQL语句查询的结果只会显示SALES_DATE从2013-01-01 00:00:00到2013-02-01 00:00:00的记录,而把2013-02-01当天的记录全都过滤掉,所以为了得到截止日期当天的记录,将最后一行SQL语句改成

AND SALES_DATE<='2013-02-01 23:59:59'

 

说明2:

	'criteria.strVal1':content,			
	'criteria.strVal2':begindate,
	'criteria.strVal3':enddate

上面三行jQuery代码是将三个查询条件(查询内容,起始日期,截止日期)传回后台,载入相应的sql语句里面

 

3、后台action代码

public String getSalesList(){
		if(criteria == null) criteria = new SimpleQueryCriteria();
		super.queryForList(SqlConstants.GET_SALESLIST, SqlConstants.GET_SALESLIST_COUNT,criteria);
		return SUCCESS;
	}

criteria是一个分页的工具类,SqlConstants是一个将sql语句映射成常量的类(其实就是起一个中介的作用)

4、sqlmap代码(用iBatis动态SQL标签)


说明1:

  如果参数不为空则查询条件有效。参数的数据类型为Collection  String 时参数不为NULL或""。

prepend:可被覆盖的SQL语句组成部分,添加在语句的前面。
property:被比较的属性

如下所示:

 
	FIRST_NAME=#firstName# 



说明2:

CONCAT(SALES_NUMBER,CLIENT_NAME) LIKE concat('%',#criteria.strVal1#,'%')

在mysql中concat 等同于字符串连接符 ||,上述SQL语句相当于以下语句

SALES_NUMBER LIKE concat('%',#criteria.strVal1#,'%') OR CLIENT_NAME LIKE concat('%',#criteria.strVal1#,'%')



 5、测试

 关于通过easyui对mysql的模糊查询以及按时间段查询的个人见解_第2张图片

 由于是模糊查询,所以只要销售单编号和客户姓名含有115的都会显示

你可能感兴趣的:(easyui,ajax,mysql)