利用newxy(新坐标),不写一行java代码实现多项查询<o:p></o:p>
胡立新<o:p></o:p>
利用newxy(新坐标)技术可以不写一行java代码实现多项查询。(在线演示http://www.newxy.net/zh_cn/samples/sample4/demo.jsp) <o:p></o:p>
- newxy(新坐标)多项查询利用了NQL查询类。 <o:p></o:p>
- newxy(新坐标)多项查询用到三个标签,<nlogic:action1>或<nlogic:action2>、<nhtml:form />、<nhtml:button />。 <o:p></o:p>
- 在<nhtml:form />标签内不要用 submit之类的标签,如<html:submit value=""></html:submit>或<input type="submit" value=""/>, 取而代之的是<nhtml:button actionId="" method="find" />。 <o:p></o:p>
- <nhtml:button actionId="" method="find" />不一定要放到<nhtml:form />标签内。 <o:p></o:p>
范例对行业表、企业表联表查询,查询的最基本条件是 企业表的行业代码字段值等于行业表某条主关键字段值。就是:
enterprise.industry_code=industry.code
用户所选择查询条件与基本条件是 and 关系。根据这样的前提构成的最基本查询语句:
select a.industry,b.* from industry a,enterprise b where{a.code=b.industry_code}
newxy(新坐标)将为此创建NQL实例:nql=new NQL(dao,"select a.industry,b.* from industry a,enterprise b where{a.code=b.industry_code}");
注意:where后紧跟的是大括号{}。
为了让理解方便,范例中实际是“行业大类”述为“行业代码” <o:p></o:p>
<nlogic:action1/>标签应放在<nhtml:form />标签上面,这两个标签针同一个formBean,因此属性formName值相同,在此formName="enterprise"。 <o:p></o:p>
<nlogic:action1 id="act1" formName="enterprise"/><o:p></o:p>
<nhtml:form action="" formName="enterprise"><o:p></o:p>
<html:hidden property="_dao" value="dao.default"/><o:p></o:p>
<nhtml:hidden property="_sql"<o:p></o:p>
value="select a.industry,b.* from industry as a,enterprise as b where{a.code=b.industry_code}"/><o:p></o:p>
<table border="1"><o:p></o:p>
<tr><o:p></o:p>
<td>逻辑</td><o:p></o:p>
<td><o:p></o:p>
<html:radio property="lg" value="1">并且</html:radio><o:p></o:p>
<html:radio property="lg" value="0">或者</html:radio><o:p></o:p>
</td><o:p></o:p>
</tr><o:p></o:p>
<tr><o:p></o:p>
<td>行业</td><o:p></o:p>
<td>等于</td><o:p></o:p>
<td><o:p></o:p>
<nhtml:hidden property="_item1" value="a.code"/><o:p></o:p>
<html:hidden property="_item1" value="="/><o:p></o:p>
<html:select property="_item1"><o:p></o:p>
<html:option value=""></html:option><o:p></o:p>
<html:option value="A">农、林、牧、渔业</html:option><o:p></o:p>
<html:option value="B">采矿业</html:option><o:p></o:p>
<html:option value="C">制造业</html:option><o:p></o:p>
</html:select>作为范例,行业没全列出。<o:p></o:p>
</td><o:p></o:p>
</tr><o:p></o:p>
<tr><o:p></o:p>
<td>企业名称</td><o:p></o:p>
<html:hidden property="_item2" value="b.name"/><o:p></o:p>
<td><o:p></o:p>
<html:select property="_item2"><o:p></o:p>
<html:option value=""></html:option><o:p></o:p>
<html:option value="=">等于</html:option><o:p></o:p>
<html:option value="like">包含</html:option><o:p></o:p>
</html:select><o:p></o:p>
</td><o:p></o:p>
<td><o:p></o:p>
<html:text property="_item2"><o:p></o:p>
</html:text><o:p></o:p>
</td><o:p></o:p>
</tr><o:p></o:p>
</table><o:p></o:p>
</nhtml:form><o:p></o:p>
加入标签<nhtml:button actionId="act1" method="find" value="查 询"/>,产生查询铵钮<o:p></o:p>
产生的查询介面如下:
<o:p></o:p>
<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><o:p></o:p>
如果想知道行成的sql语句,可以用struts标签:<bean:write name="enterprise" property="_sql"/>, <o:p></o:p>
说明: <o:p></o:p>
- <nhtml:form />action属性值为空,是以当前路径为值。可查看产生的静态页面。 <o:p></o:p>
- <html:hidden property="_dao" value="dao.default"/>
其作用是指明由哪个DAO类来处理。默认值是dao.default,此处可以不用,只为演示。"_dao"是特定的属性名 <o:p></o:p>
- <nhtml:hidden property="_sql" value="select a.industry,b.* from industry as a,enterprise as b where{a.code=b.industry_code}"/>
在此不用struts<html:hidden/>标签或<input type="hidden" name="_sql" value="......"/>,是因为要在静态页面上不显示这条sql语名,达到安全的目的。 范例静态页面上产生的是<input type="hidden" name="_sql" value="_hidden_sql_1">。 其它几处<nhtml:hidden />作用相同。 <o:p></o:p>
- 而且、或者逻辑关系由 <html:radio property="_lg" value="1">并且</html:radio> <html:radio property="_lg" value="0">或者</html:radio>决定。
_lg是特定的属性名。 <o:p></o:p>
- 其它查询项的组合方法与“企业名称”及“行业代码”查询项的组合方式相同。
按照例中的组合,_item1的值可行成类似a.code='A',_item2的值可形成类似b.name like '%公司%'。
必须一组三项,三项用同一属性名,属性名以"_item"开头,后用不同数字区分。 <o:p></o:p>
- 另有组合方式在后序技术文档中补充,此文档暂不介绍。 <o:p></o:p>
利用<nlogic:iterate id="" name="" property=""></nlogic:iterate>标签、<nlogic:navigate/>标签、<nhtml:TR></nhtml:TR>标签、<nhtml:javascripts/>标签、<nhtml:stylesheets/>标签来分页显示查询结果。
建义<nhtml:javascripts/>标签、<nhtml:stylesheets/>标签两标签放在页首或较前部。如果有javascripts脚本错本且数据列表没有光带, 是因为没有使用<nhtml:javascripts/>标签、<nhtml:stylesheets/>标签。 <o:p></o:p>
<nhtml:javascripts/><o:p></o:p>
<nhtml:stylesheets/><o:p></o:p>
<logic:notEmpty name="enterprise" property="_coll"><o:p></o:p>
<table><o:p></o:p>
<nlogic:iterate id="rec" name="enterprise" property="_coll"><o:p></o:p>
<nhtml:TR><o:p></o:p>
<td>1</td><o:p></o:p>
<td><bean:write name="rec" property="industry"/></td><o:p></o:p>
<td><bean:write name="rec" property="name"/></td><o:p></o:p>
</nhtml:TR><o:p></o:p>
</nlogic:iterate><o:p></o:p>
</table><o:p></o:p>
</logic:notEmpty><o:p></o:p>
<o:p> </o:p>
下图是范例查询结果
<o:p></o:p>
<o:p> </o:p>
<o:p></o:p>
<o:p> </o:p>
范例的完整jsp代码如下:<o:p></o:p>
<o:p> </o:p>
<o:p>
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/newxy-html.tld" prefix="nhtml"%>
<%@ taglib uri="/WEB-INF/newxy-logic.tld" prefix="nlogic"%>
<%@ taglib uri="/WEB-INF/newxy-bean.tld" prefix="nbean"%>
<nlogic:action1 id="act1" formName="enterprise"/>
<nhtml:form action="" formName="enterprise">
<html:hidden property="_dao" value="dao.default"/>
<nhtml:hidden property="_sql" value="select a.industry,b.* from industry as a,enterprise as b where{a.code=b.industry_code}"/>
<table border="1">
<tr>
<td>逻辑</td>
<td>
<html:radio property="_lg" value="1">并且</html:radio>
<html:radio property="_lg" value="0">或者</html:radio>
</td>
</tr>
<tr>
<td>行业</td>
<td>等于</td>
<td>
<nhtml:hidden property="_item1" value="a.code"/>
<html:hidden property="_item1" value="="/>
<html:select property="_item1">
<html:option value=""></html:option>
<html:option value="A">农、林、牧、渔业</html:option>
<html:option value="B">采矿业</html:option>
<html:option value="C">制造业</html:option>
</html:select>作为范例,行业没全列出。
</td>
</tr>
<tr>
<td>企业名称</td>
<html:hidden property="_item2" value="b.name"/>
<td>
<html:select property="_item2">
<html:option value=""></html:option>
<html:option value="=">等于</html:option>
<html:option value="like">包含</html:option>
</html:select>
</td>
<td>
<html:text property="_item2">
</html:text>
</td>
</tr>
</table>
</nhtml:form>
<nhtml:button actionId="act1" method="find" value="查 询"/>
<nhtml:javascripts/>
<nhtml:stylesheets/>
<logic:notEmpty name="enterprise" property="_coll">
<table>
<nlogic:iterate id="rec" name="enterprise" property="_coll">
<nhtml:TR>
<td>1</td>
<td><bean:write name="rec" property="industry"/></td>
<td><bean:write name="rec" property="name"/></td>
</nhtml:TR>
</nlogic:iterate>
</table>
</logic:notEmpty>
</o:p>
新坐标技术网站:http://www.newxy.net<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
分享到:
相关推荐
maxwell simplorer simulink 永磁同步电机矢量控制联合仿真,电机为分数槽绕组,使用pi控制SVPWM调制,修改文件路径后可使用,软件版本matlab 2017b, Maxwell electronics 2021b 共包含两个文件, Maxwell和Simplorer联合仿真文件,以及Maxwell Simplorer simulink 三者联合仿真文件。
基于springboot的网上图书商城--论文.zip
门板边挡板分离喂料机sw19全套技术资料100%好用.zip
信号与系统matlab仿真实验报告2024(学生提交).docx
洗砂机stp全套技术资料100%好用.zip
用句子记忆单词带背版本,适合时间比较充足想打好基础的同学
电子PCB板龙门铣自动化生产线sw17可编辑全套技术资料100%好用.zip
最新紧固件标准型号对照表.docx
【创新无忧】基于matlab遗传算法GA优化极限学习机KELM故障诊断【含Matlab源码 10735期】.zip
【创新无忧】基于matlab极光算法PLO优化极限学习机KELM故障诊断【含Matlab源码 10707期】.zip
java面向对象程序设计实验报告
展示PRD文档的关键要素编写具体示例。同时提供了一份模板,方便撰写PRD文档。
内容概要:本文详细介绍了一个基于广义变分同步优化(GVSAO)的时间序列预测模型项目。该项目涵盖了从项目背景到最终部署的整个流程,包括数据预处理、模型构建、训练、优化、GUI界面设计、实时预测及系统部署等方面。GVSAO作为一种新型优化方法,能更好地处理非线性关系和高维数据的特点,在预测股票价格、电力负荷、天气变化等方面显示出优越性能。文中提供的MATLAB代码和可视化工具使模型实现和评估更为便捷。 适合人群:对时间序列预测感兴趣的科研工作者、学生和工程师,特别是那些想要深入了解同步优化技术及其应用场景的人。 使用场景及目标:①适用于金融、能源、气象和制造业等多个领域的时间序列预测;②提升模型预测精度;③提供一个完整的项目实施模板供学习模仿。使用该模型可以更有效地挖掘时间序列数据背后隐含的趋势和规律,辅助商业决策和社会管理。 其他说明:本文档不仅包含理论概念和技术细节,还有丰富的实例演示,可以帮助读者全面掌握基于GVSAO的时间序列预测技巧。同时,附带完整的程序代码使得研究成果可以直接应用于实际工作中。
DSP芯片程序读取 DSP28德州仪器28系列DSP反汇编,定点器件和浮点器件均支持,能够根据out、hex或bin文件建立可以编译的CCS汇编语言工程,并且编译后可生成二进制完全相同的bin文件,方便进行研究软件设计思路,二次开发,器件迁移,混淆再链接,研究通信协议,解除ID限制,提取算法等,小批量的代码转C。
内容概要:本文介绍了一种基于对比学习的图异常检测算法,涵盖数据预处理、对比样本构建、模型设计(含选择适当的GNN架构及设计对比学习模块)、异常检测流程、结果评估方法和代码实例六个主要环节。文章特别强调在常规数据集(如Cora、PubMed)的应用上力求获得较高的AUC分数,超过80%,并且提供了详细的操作指导和Python源代码示例供开发者学习。 适用人群:主要面向有一定机器学习、深度学习理论基础,尤其关注图结构数据处理的研究人员、数据科学家和技术专家。对于有志于从事网络安全监控、金融风控等领域工作的专业人士尤为有用。 使用场景及目标:①针对具有大量节点关系的数据结构进行高效的异常识别;②利用先进的AI技术和工具箱快速搭建并迭代优化系统性能,达成高效准确的预测;③为后续研究提供参考和启示。 其他说明:文中不仅深入解析了每一阶段的技术细节,而且通过具体的Python实现片段帮助读者更好地理解和实践这一复杂的过程。对于期望深入挖掘对比学习在非传统数据格式下应用可能性的人而言是个宝贵的参考资料。
MIPI-DPU platform TCL
【JavaScrip】一个傻妞机器人插件库_pgj
comsol锂离子电池组充放电循环强制液冷散热仿真。 模型为SolidWorks导入,可以提供原模型。 电池模型:一维电化学(p2d)模型耦合三维热模型
饼干分包sw20可编辑全套技术资料100%好用.zip
自适应大领域搜索算法(ALNS)matlab解决tsp问题,与传统大规模领域搜索算法(LNS)相比收敛性强,运行时间短,很好的学习资料