`
aystnd
  • 浏览: 22945 次
  • 性别: Icon_minigender_1
  • 来自: 山东淄博
社区版块
存档分类
最新评论

一个简便的查询框架【内容已删除】

阅读更多
应公司要求,本博客内容已删除
分享到:
评论
4 楼 able 2007-07-20  
邹总阿,支持下~~
3 楼 lang 2007-07-19  
能不能给我一个action和jsp,我在你给的附件中没有找到相关的使用action和jsp!比如:BalanceManager
我的邮箱是:lanfanss@126.com
2 楼 aystnd 2006-12-13  
另外,我设计的这个查询类为了和Struts结合,特别编写了一个对应的Form类。然后在JSP页面可以通过Struts标签,不需要修改后台代码,实现随意添加、修改Struts标签的属性值,就可实现查询条件的调整
QueryConditionForm:实现与QueryCondition的数据交换
package com.lily.dap.webapp.form;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

import com.lily.dap.model.QueryExpression;

/**
 * Generated by XDoclet/actionform. This class can be further processed with XDoclet/webdoclet/strutsconfigxml and XDoclet/webdoclet/strutsvalidationxml.
 *
 * @struts.form name="queryConditionForm" 
 */
public class QueryConditionForm extends ActionForm implements java.io.Serializable {
    /**
	 * <code>serialVersionUID</code>
	 */
	private static final long serialVersionUID = -4489598235078274874L;

    protected List conditions = new ArrayList();

    /** Default empty constructor. */
    public QueryConditionForm() {}

	/**
	 * @return the conditions
	 */
	public List getConditions() {
		return conditions;
	}
	
	/**
	 * @param conditions the conditions to set
	 */
	public void setConditions(List conditions) {
		this.conditions = conditions;
	}

	public Object getCondition( String condition )
    {
		String[] items = condition.split(",");
		Iterator it = conditions.iterator();
		while (it.hasNext()) {
			QueryExpression queryExpression = (QueryExpression)it.next();
			if (items[0].equals(queryExpression.getName())) {
				boolean flag = false;
				if (items.length > 2) {
					if (items[1].equals(queryExpression.getOp()) && items[2].equals(queryExpression.getType()))
						flag = true;
				} else if (items.length > 1) {
					if (items[1].equals(queryExpression.getOp()))
						flag = true;
				} else
					flag = true;
				
				if (flag)
					return queryExpression.getValue();
			}
		}
		
		return null;
    }

	public QueryExpression getQueryExpression( String condition )
    {
		Iterator it = conditions.iterator();
		while (it.hasNext()) {
			QueryExpression queryExpression = (QueryExpression)it.next();
			if (condition.equals(queryExpression.getName()))
				return queryExpression;
		}
		
		return null;
    }

    public void setCondition( String condition, Object value )
    {
    	String[] items = condition.split(",");
    	if (items.length > 2)
    		conditions.add(new QueryExpression(items[0], items[1], (String)value, items[2]));
    	else if (items.length > 1)
    		conditions.add(new QueryExpression(items[0], items[1], (String)value));
    	else
    		conditions.add(new QueryExpression(items[0], QueryExpression.OP_EQ, (String)value));
    }

        /* To add non XDoclet-generated methods, create a file named
           xdoclet-QueryConditionForm.java 
           containing the additional code and place it in your metadata/web directory.
        */
    /**
     * @see org.apache.struts.action.ActionForm#reset(org.apache.struts.action.ActionMapping,
     *                                                javax.servlet.http.HttpServletRequest)
     */
    public void reset(ActionMapping mapping, HttpServletRequest request) {
        // reset any boolean data types to false

    }
}

页面代码示例:
<html:form action="listLeaguer"> 
<fmt:message key="userForm.username"/> 
<html:text property="condition(username,like)" styleId="username" styleClass="text_und" size="10"/> 
<fmt:message key="balance.leaguer.field.truename"/> 
<html:text property="condition(truename,like)" styleId="truename" styleClass="text_und" size="10"/> 
<fmt:message key="balance.leaguer.field.commender"/> 
<html:text property="condition(commender,like)" styleId="commender" styleClass="text_und" size="10"/> 
<fmt:message key="balance.leaguer.field.shop"/> 
<html:text property="condition(shopMan,like)" styleId="shopMan" styleClass="text_und" size="10"/> 
<fmt:message key="balance.query.countNum"/> 
<html:text property="condition(joinCountNum,>=)" styleId="begInjoinCountNum" size="10" styleClass="text_und"/>- 
<html:text property="condition(joinCountNum,<=)" styleId="endjoinCountNum" size="10" styleClass="text_und"/> 
<html:text property="condition(inDate,>=)" styleId="begIninDate" size="12" styleClass="text_und" readonly="true"/> 
<img src="images/picker.gif" width="20" height="20" align="absmiddle" style="cursor:hand" onClick="calendar(document.all.begIninDate)"> - 
<html:text property="condition(inDate,<=)" styleId="endInDate" size="12" styleClass="text_und" readonly="true"/> 
<img src="images/picker.gif" width="20" height="20" align="absmiddle" style="cursor:hand" onClick="calendar(document.all.endInDate)"> 
<a href="#" onclick="query();"><fmt:message key="button.query"/></a> 
<fmt:message key="label.inDate"/> 
</html:form> 

然后是Action代码示例:
	public ActionForward list(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		if (log.isDebugEnabled()) {
			log.debug("查询显示计算结果及其列表");
		}
		List balanceList = new ArrayList();
		QueryCondition queryCondition = null;

		String action = ParamUtils.getParameter(request, "actionType");
		if ("query".equals(action)) {
			QueryConditionForm myform = (QueryConditionForm)form;
			queryCondition = (QueryCondition)this.convert(myform);
			request.getSession().setAttribute("balanceQueryCondition", queryCondition);
		} else {
			queryCondition = (QueryCondition)request.getSession().getAttribute("balanceQueryCondition");
			if (queryCondition == null)
				queryCondition = new QueryCondition();
		}
		
		PageSortModel psm = new PageSortModel(request, "balanceList");
		queryCondition.setPageSize(psm.getPageSize());
		queryCondition.setPageNo(psm.getPageNo());
		queryCondition.addOrder("countNum", QueryOrder.DIR_DESC);
		BalanceManager balanceManager = (BalanceManager)getBean("balanceManager");
		
		balanceList = balanceManager.getBalances(queryCondition);
		
		request.setAttribute("balanceList", balanceList);
		
		psm.setTotalRows(queryCondition.getTotalRows());

		return  mapping.findForward("list");
	}
1 楼 aystnd 2006-12-11  
兄弟们,给提提意见吧,呵呵,这个设计肯定还有很多不足的地方,不过我现在用着他觉得还是挺好用的。
哈,页面上增加一个新的查询或者改变查询的方式,比如:原来用“=”,现在要改成“like”,非常的方便。恩,希望大家能自己用用,多提提意见啊。

相关推荐

    DwMX使用框架PPT学习教案.pptx

    例如,可能在顶部有一个框架显示logo,底部有两个框架,一个用于导航,另一个用于主要内容,这种布局就需要嵌套框架集。 总的来说,DwMX的框架和框架集功能提供了强大的网页布局工具,使得设计师能够创建出交互性强...

    自研的一种ORM框架,DMS框架是采用LINQ的写法的一种数据库访问框架-DMSFrame.zip

    DMSFrame是一个自研发的对象关系映射(ORM)框架,其设计灵感来源于LINQ(Language Integrated Query)技术,主要用于简化数据库访问操作。ORM框架的主要作用是桥接编程语言与数据库系统,使得开发者可以用面向对象...

    Java三大框架代码

    最后,Hibernate是一个对象关系映射(ORM)框架,它为Java开发者提供了一种在Java应用中操作数据库的简便方式。Hibernate通过XML配置或注解将Java对象与数据库表进行映射,实现了对象的持久化。它提供了CRUD(创建、...

    JAVA WEB框架,java网站一个模块只用写一个文件

    JAVA WEB框架,java网站一个模块只用写一个文件 以前的servlet在现在的开发中已经不怎么常见,因为操作起来比较原始和麻烦。有些人就是不安于现状去改造它。 做得好的有Struts,Hybernate,Spring那么这些框架都是很...

    基于SSH框架的医疗信息系统中简便就医模块的研究与应用.rar

    - **Spring**:是一个全面的后端应用程序框架,提供依赖注入、AOP(面向切面编程)、事务管理等功能,便于组件化和解耦。 - **Hibernate**:是流行的对象关系映射工具,使得开发者可以将数据库操作与业务逻辑分离...

    .Grove—— .Net下的ORM框架

    .Grove 是一个针对 .NET 平台的 Object-Relational Mapping (ORM) 框架,它的设计目标是简化数据库操作,将数据访问层的代码与业务逻辑分离,提高开发效率,并减少对 SQL 语句的直接依赖。ORM 框架通过映射数据库表...

    Hibernate框架技术课件ppt

    Hibernate框架技术是Java开发中的一个核心组件,它是一个对象关系映射(ORM)工具,用于在Java应用程序中处理数据库交互。本课件旨在全面讲解Hibernate框架的原理、配置与使用方法,帮助学习者轻松掌握这一强大的...

    ssm框架整合(maven),

    通过这个整合的SSM框架,开发者可以快速搭建起一个功能完善的Java Web应用,进行CRUD(创建、读取、更新、删除)操作,同时利用Spring和Struts2的强大功能处理复杂的业务逻辑和用户交互。而Maven的引入,则确保了...

    支持代码生成和多表查询的ORM框架MyORM(一)

    MyORM是一个支持代码生成和多表查询的ORM(对象关系映射)框架,它旨在简化数据库操作,将数据库中的表结构映射为Java对象,从而让开发者能够更专注于业务逻辑而不是繁琐的数据访问层代码。本篇文章将深入探讨MyORM...

    漂亮的jquery后台框架

    【标题】"漂亮的jquery后台框架"揭示了这个压缩包中包含的是一个设计精美、基于jQuery的后台管理界面框架。jQuery是一种广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互,使得网页开发...

    php框架 doitphp框架

    - **数据库操作**:DoitPHP提供了简便的数据库操作接口,支持多种数据库,如MySQL,方便开发者进行数据查询、插入、更新和删除等操作。 - **助手函数**:框架内包含了丰富的助手函数,可以帮助开发者快速完成常见的...

    Android数据库框架GreenDAO的基本操作

    在Android开发中,数据库管理是不可或缺的一部分,而GreenDAO作为一款高效的对象关系映射(ORM)框架,使得在Android上处理SQLite数据库变得异常简便。本文将深入探讨GreenDAO的基本操作,帮助开发者快速理解和掌握...

    JQuery一个非常好的Javascript框架

    jQuery,作为一个广受欢迎的JavaScript库,它极大地简化了HTML文档遍历、事件处理、动画制作以及Ajax交互。自2006年发布以来,jQuery迅速成为开发者首选的工具,因其简洁、高效的API而受到赞誉。以下是对jQuery核心...

    Android-一个方便实用的OrmLite数据库框架支持一键集成。

    标题中的“Android-一个方便实用的OrmLite数据库框架支持一键集成”揭示了本文将要讨论的是Android平台上的一款数据库管理框架——OrmLite,并强调其易于集成的特点。OrmLite是一款轻量级的对象关系映射(ORM)框架...

    easy4net是一个轻量级orm框架

    ORM(Object-Relational Mapping,对象关系映射)框架是现代软件开发中的一个重要工具,它提供了一种在面向对象编程语言中操作关系数据库的方式。通过ORM,开发者可以将数据库表与程序中的类进行映射,从而用面向...

    JQuery实现经典网站后台框架

    这个“JQuery实现经典网站后台框架”项目,显然是一个旨在教授初学者如何使用jQuery来构建一个功能完备的网站后台系统的教程或实例。 首先,让我们深入了解一下jQuery的核心概念: 1. **DOM操作**:DOM(Document ...

    两表ssh框架

    Hibernate是Java语言下的一个ORM框架,它简化了数据库操作,将数据库操作转化为对Java对象的操作。在处理“两表ssh框架”时,Hibernate通过实体类(Entity)和映射文件(Hibernate Mapping File)定义数据库表结构,...

    ssh框架整合

    Hibernate支持CRUD(创建、读取、更新、删除)操作,提供了丰富的查询API,包括HQL(Hibernate Query Language)和Criteria API,使得数据库操作更加简便。 在SSH整合过程中,通常会使用Spring的声明式事务管理,...

    jquery-1.4 著名js框架

    **jQuery 1.4:一个里程碑式的JavaScript框架** jQuery,作为一个高效、易用的JavaScript库,自2006年发布以来,极大地简化了前端开发人员处理网页DOM操作、事件处理、动画效果以及Ajax交互的方式。jQuery 1.4版本...

    Hibernate框架包

    Hibernate是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。这个"Hibernate框架包"包含了用于实现ORM功能所需的jar文件和配置文件,以及可能的工具类,使得数据库...

Global site tag (gtag.js) - Google Analytics