功能描述:1)自定义从那几张表中查询数据
2)可自定义组合条件
3)自定义组合表头
4)可定制查询模板
5)可以选择查询模板回显上去
6)可将符合条件的所有数据导出成excel,根据类型创建不同的cell
效果图环境准备:可查询表和字段配置:search-conditions.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 配置可查询的字段,和该字段显示的文本值,还有该字段查询的类型 --> <conditions> <!-- 定义查询的表和该表在页面上显示的值 --> <table name="xmb" value="项目表"> <!-- 定制可查询到的字段,每个字段都带上该表的简写,并定义字段的类型 * type对应的是设定条件中的关系, type="string" :表示该查询的关系有:1)等于,2)包含 对应的查询条件值是文本框需要自己填写 type="num" :表示该查询的关系有:1)大于,2)小于,3)等于,4)大于等于,5)小于等于 查询的是数值类型,对应的查询条件值是文本框,需自己填写值 type="select" :表示该查询的关系有:1)等于 对应的查询条件值是下拉选select,配置在该字段里的<searchValue>选项 type="date" :表示该查询的是日期,对应的关系中的值是日期段 对应的查询条件值是带日期控件的文本框,只能选择时间, 日期对应的是开始和结束日期,不填写,开始日期默认是'1900-01-01',结束日期是当前的系统时间 备用type="int" :表示查询的是整数类型,用于导出的时候区分整数类型和浮点类型, (不区分的话,在excel中没有办法计算) --> <column name="x.xmmc" showText="项目名称" type="string" /> <column name="x.xmfzrxm" showText="项目负责人姓名" type="string"/> <column name="x.xmssdq" showText="项目所属地区" type="select"> <!-- name保存在数据库中的值,value显示给客户看的值 --> <searchValue name="11" value="海淀区"/> <searchValue name="12" value="朝阳区"/> <searchValue name="13" value="东城区"/> <searchValue name="14" value="西城区"/> </column> <column name="x.ksrq" showText="开始日期" type="date"/> <column name="x.xmmj" showText="项目面积" type="num"/> <column name="x.xmrs" showText="参与人数" type="int"/> </table> <table name="qyb" value="企业表"> <column name="q.qymc" showText="企业名称" type="string"/> <!-- 省略.... --> </table> <table name="ryb" value="人员表"> <column name="r.rymc" showText="人员名称"/> <column name="r.rylx" showText="人员类型" type="select"> <searchValue name="" value=""/> </column> </table> </conditions>
查询模板定制,在指定目录下,登录用户名.xml
<?xml version="1.0" encoding="UTF-8"?> <searchCondition> <!-- 查询模板定制 * searchTemplate 代表一个模板 * id 当前模板编号,添加的时候,取最大值+1 * name 模板名称 * fromTable 从哪几张表从查询数据 * tableHead 设置的表头 * tr 代表设置条件的行 * ljys 逻辑运算,只有and和or,默认为and * zkh 左括号 * tableName 当前字段所在的表 * columnName 当期设置条件的字段 * gx 查询的关系 * ykh 右括号 --> <searchTemplate id="1" name="未命名1" fromTable="xmb,qyb" tableHead="{'x.xmmc':'项目名称','x.xmfzrxm':'项目负责人姓名','x.xmssdq':'项目所属地区','q.qymc':'企业名称'}"> <tr ljys="" zkh="" tableName="xmb" columnName="x.xmmc" gx="like" cxtjz="北京" ykh=""/> <tr ljys="and" zkh="" tableName="qyb" columnName="q.qylx" gx="like" cxtjz="公司" ykh=""/> <tr ljys="and" zkh="(" tableName="xmb" columnName="x.xmssdq" gx="=" cxtjz="11" ykh=""/> <tr ljys="or" zkh="" tableName="xmb" columnName="x.xmssdq" gx="=" cxtjz="12" ykh=")"/> </searchTemplate> </searchCondition>
查询页面定制dzSearch.jsp
<%@ page language="java" pageEncoding="UTF-8"%> <%@ page isELIgnored="false"%> <% String webPath = request.getContextPath(); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>综合查询</title> </head> <body> <div > <!-- 由于我这边是固定的从三张表中读取数据,我就偷了个懒,直接静态了,如果表不固定,可以动态的加载 --> <div class="table-top"><span style="float: left;vertical-align: middle">设定条件</span><input type="button" name="addTrBtn" id="addTrBtn" class="button" style="float:right;width:70px;height:22px" value="添加条件" onclick="addTr()"/></div> <table id="conditionTable" class="tableRegion" style="table-layout:fixed;" width="100%" > <thead class="tableHeader "> <tr> <td width="5%">逻辑运算</td> <td width="5%">左括号</td> <td width="10%">表名</td> <td width="30%">字段</td> <td width="10%">关系</td> <td width="15%">查询条件值</td> <td width="5%">右括号</td> <td width="5%">操作</td> </tr> </thead> <tbody> <tr > <td ></td> <td ><input type="text" onchange="kh(this.value)" class="khcss"/></td> <td ><select onchange='tableChange(this,1)' ><option selected='selected'>请选择</option><option value='FWAQ_DWY_HTINFO'>项目表</option><option value='FWAQ_DWY_WYINFO'>企业表</option><option value='FWAQ_DWY_WYUSERINFO'>人员表</option></select></td> <td><select onchange='columnChange(this)' style="width:340px"></select></td> <td ></td> <td ></td> <td ><input type="text" onchange="kh(this.value)" class="khcss"/></td> <td ></td> </tr> </tbody> </table> </div> <!-- 自定义条件结束 --> <!-- 自定义表头开始 --> <div class="table-top" style="clear: both"><span style="float: left;vertical-align: middle">表头设定</span></div> <table> <tr> <td> <select id="tableHeader" multiple="multiple" size="10" onchange="tableChange(this,2)" style="width: 100px"> </select> </td> <td> <select id="columnHeader" multiple="multiple" size="10" style="width: 330px" > </select> </td> <td><input id="rightMoveBtn" type="button" value=">>" class="button" style="width:60px;height:20px" /><br/><br/> <input id="leftMoveBtn" type="button" value="<<" class="button" style="width:60px;height:20px" /> </td> <td> <select id="resultHeader" multiple="multiple" size="10" style="width: 330px"></select> </td> </tr> </table> <!-- 自定义表头结束 --> <br/> <input id="searchBtn" type="button" value="查 询" class="button" onclick="searchFn()" style="width:60px;height:20px" /> <input id="saveSearchCondition2Xml" type="button" value="保存成模板" class="button" style="width:80px;height: 20px"> <input id="openMbPage" value="选择模板" type="button" class="button" vlaue="选择模板" onclick="openMbWin()" style="width:70px;height:20px" /><span id="showMbText"></span> </body> </html>
文章评论