建表是使用easyui的datagrid来显示查询mysql的结果,系统是基于SSH框架建立
先来张图看看界面
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:
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、测试
由于是模糊查询,所以只要销售单编号和客户姓名含有115的都会显示