`
baizheng
  • 浏览: 129232 次
社区版块
存档分类
最新评论

valuelist在程序中修改sql语句

阅读更多

在action中:

        String hsql = "FROM com.ruancu.model.MailTemplate AS vo " +
                      "/~name: WHERE vo.identifier LIKE {name} ~/" +
                      "/~sortColumn: ORDER BY vo.[sortColumn] [sortDirection]~/";
       
        ValueListUtil vlu = new ValueListUtil(getServlet().getServletContext());
        Map params = new HashMap();
        params.put("name","%");
        vlu.setHSql(hsql);
        vlu.handleValueList("mailTemplateList",params,request);

package com.ruancu.webapp.util;

/** @author Albert Song     修改by bzshow

 http://www.albertsong.com/blog/blogview.asp?logID=30&cateID=3
 */

 
import java.util.Map;
import java.util.HashMap;
 
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
 
import net.mlw.vlh.ValueList;
import net.mlw.vlh.ValueListHandler;
import net.mlw.vlh.ValueListAdapter;
import net.mlw.vlh.ValueListInfo;
import net.mlw.vlh.web.ValueListRequestUtil;
import net.mlw.vlh.adapter.hibernate.Hibernate3Adapter;
import net.mlw.vlh.DefaultValueListHandlerImpl;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
 
/**
 * 便于在struts中操作valuelist的工具类
 * USAGE:
 * 在从strtus action继承的类中
 *    ValueListUtil vlu = new ValueListUtil(getServlet().getServletContext());
 *    Map params = new HashMap();
 *  params.put("loginID","1");
 *  vlu.handleValueList("queryEntry",params,request)
 * @author Albert Song
 * @version 1.0
 */
public class ValueListUtil {
 
 /**
  * 从ActionServlet里取出来的ServletContext
  */
 private ServletContext sc=null;
 
 private String hSql = null;
 /**
  * 保存配置文件中的valuelist handler bean id
  */
 private String valueListHandlerName = "valueListHandler";
 /**
  * @param sc
  */
 public ValueListUtil(ServletContext sc)
 {
  this.sc=sc;
 }
 
 /**
 * @return Returns the hsql.
 */
public String getHSql() {
 return hSql;
}

/**
 * @param hsql The hsql to set.
 */
public void setHSql(String hSql) {
 this.hSql = hSql;
}

/**
  *
  * @param sc
  * @param vlh 配置文件中对应的ValueListHandler id
  */
 public ValueListUtil(ServletContext sc,String valueListHandlerName)
 {
  this.sc=sc;
  this.valueListHandlerName=valueListHandlerName;
 
 }
 
 /**
  * default getValueListHandler
  */
  public ValueListHandler getValueListHandler()
  {
    return getValueListHandler(valueListHandlerName);
 }
 
  /**
  * getValueListHandler
  */
  public ValueListHandler getValueListHandler(String handlerID)
  {
    WebApplicationContext context = WebApplicationContextUtils.
        getWebApplicationContext(sc);
    return (ValueListHandler) context.getBean(handlerID,
                                              ValueListHandler.class);
  }
 
  /**
   * @param request
   * @param valueListEntry valuelist 配置文件中的Entry
   */
  public  void handleValueList(String valueListEntry,HttpServletRequest request)
  {
   Map params = new HashMap();
   handleValueList(valueListEntry,params,request,"valueListInfo","list");
  }
 
  /**
   *
   * @param valueListEntry
   * @param params
   * @param request
   */
  public void handleValueList(String valueListEntry,Map params,HttpServletRequest request)
  {
   handleValueList(valueListEntry,params,request,"valueListInfo","list");
  }
  /**
   *
   * @param valueListEntry
   * @param request
   * @param valueListInfoName
   * @param valueListName
   */
  public void handleValueList(String valueListEntry,HttpServletRequest request,String valueListInfoName,String valueListName)
  {
   Map params = new HashMap();
   handleValueList(valueListEntry,params,request,valueListInfoName,valueListName);
  }
  /**
   *
   * @param valueListEntry 配置文件中sql的Entry
   * @param params 自定义参数值,可以通过params改变或增加参数
   * @param request 
   * @param valueListInfoName 设置到request中的valueListInfo的名字
   * @param valuListName     设置到request中的valueList的名字
   */
  public void handleValueList(String valueListEntry,Map params,HttpServletRequest request,String valueListInfoName,String valueListName)
  {
     handleValueList(valueListEntry,params,request,valueListInfoName,valueListName,"");
    }
 
 /**
   *
   * @param valueListEntry 配置文件中sql的Entry
   * @param params 自定义参数值,可以通过params改变或增加参数
   * @param request 
   * @param valueListInfoName 设置到request中的valueListInfo的名字
   * @param valuListName     设置到request中的valueList的名字
   * @param tableID    jsp中table的id
   */
  public void handleValueList(String valueListEntry,Map params,HttpServletRequest request,String valueListInfoName,String valueListName,String tableID)
  {
   Map parameters = ValueListRequestUtil.getRequestParameterMap(request,tableID);
   parameters.putAll(params);
  
   if (hSql != null)
   {
    DefaultValueListHandlerImpl handler = (DefaultValueListHandlerImpl)getValueListHandler();
    Hibernate3Adapter adapter = (Hibernate3Adapter)handler.getConfig().getAdapter(valueListEntry);
    adapter.setHql(hSql);
   }
   ValueList valueList =
        getValueListHandler().getValueList(valueListEntry,
                                           new ValueListInfo(parameters));
     ValueListInfo valueListInfo=valueList.getValueListInfo();
     request.setAttribute(valueListInfoName, valueListInfo);
    request.setAttribute(valueListName, valueList);
  }

 
 
 
}

 

 

参考:

http://www.albertsong.com/blog/blogview.asp?logID=30&cateID=3



分享到:
评论
1 楼 shenshuibomb 2010-05-19  
"/~name: WHERE vo.identifier LIKE {name} ~/" +
"/~sortColumn: ORDER BY vo.[sortColumn] [sortDirection]~/";
中括号与大括号有什么区别,在应用上不一样吗
我在官网上也没找到答案,既然你贴出来了,就贴完了再讲讲吧
       

相关推荐

    仿valuelist式动态sql拼装

    标题“仿valuelist式动态sql拼装”指的是在编程中实现类似MyBatis的`<foreach>`标签功能,用于动态地拼接SQL语句,尤其是处理列表参数时的插入、更新或查询操作。这种技术常见于Java后端开发,尤其是在使用ORM(对象...

    分离valuelist的sql拼装

    Valuelist通常是指在SQL语句中用于存储一组值的列表,比如在INSERT语句中,我们可能会用到这样的格式:`INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4), ...` 这里的`...

    java分页插件valuelist

    Java 分页插件Valuelist是一款用于Java Web开发中的实用工具,主要目的是为了在处理大量数据时提高性能和用户体验,通过高效地分页显示数据,避免一次性加载所有数据导致内存压力过大。Valuelist源码的分析对于理解...

    如何通过配置自动实现ValueList中hql语句的整型参数转换

    HQL是一种面向对象的查询语言,它允许开发者以对象和属性的方式编写查询,而不是直接操作数据库的SQL语句。然而,在实际应用中,可能会遇到一个常见问题:当使用ValueList传递参数到HQL语句时,由于ValueList默认将...

    7.ESQL/C简单插入语句.docx

    本章节主要聚焦于如何在C程序中使用INSERT语句一次性向表中插入一条记录,并展示了数据转换函数的用法。 插入语句的基本语法如下: ```sql INSERT INTO TableName (ColumnList) VALUES (ValueList) ``` 其中: - ...

    7.ESQL/C简单插入语句.pdf

    在学习这一主题后,你将掌握如何在数据库中通过嵌入SQL语句来插入一行记录。 **INSERT语句语法:** 插入语句的基本格式如下: ```sql INSERT INTO TableName [ (ColumnList) ] VALUES (ValueList) ``` - `INSERT ...

    c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)

    在C#中,进行大数据批量插入到不同的数据库如SQL Server、Oracle、SQLite和MySQL时,开发者需要考虑每个数据库系统的特性和API。以下是对这四种数据库批量插入操作的详细讲解: 1. **SQL Server批量插入** SQL ...

    用JDBC实现数据库的级联删除与更新

    #### 3.2 SQL 语句设计 - **级联删除**: - 删除学院前,先删除其对应的学生。 ```sql DELETE FROM student WHERE schid = ? ``` - 删除学院。 ```sql DELETE FROM school WHERE id = ? ``` - **级联更新**:...

    System.Data.Silverlight V2.1

    //设置命令类型,一般SQL语句是Text,存储过程是StoredProcedure cmd.CommandType = DbCommandType.Text; //设置执行类型 cmd.ExecuteType = DbExecuteType.Reader; //执行命令,得到结果 ...

    hibernateCriteria的使用.docx

    在Java的持久化框架Hibernate中,Criteria API是一种用于构建动态查询的强大工具,它允许开发者以编程方式构建查询,而不是直接写SQL语句。下面将详细解释Criteria API的使用及其相关概念。 1. Query By Example ...

    动态给表添加删除字段并同时修改它的插入更新存储过程

    本文将深入探讨如何在SQL Server环境中动态地为表添加或删除字段,并同时修改与这些字段相关的插入和更新存储过程。 首先,我们需要创建一个辅助表[A],它有两个字段:[ID](自增长)和[FieldName]。表[A]的设计...

Global site tag (gtag.js) - Google Analytics