在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
分享到:
相关推荐
标题“仿valuelist式动态sql拼装”指的是在编程中实现类似MyBatis的`<foreach>`标签功能,用于动态地拼接SQL语句,尤其是处理列表参数时的插入、更新或查询操作。这种技术常见于Java后端开发,尤其是在使用ORM(对象...
Valuelist通常是指在SQL语句中用于存储一组值的列表,比如在INSERT语句中,我们可能会用到这样的格式:`INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4), ...` 这里的`...
Java 分页插件Valuelist是一款用于Java Web开发中的实用工具,主要目的是为了在处理大量数据时提高性能和用户体验,通过高效地分页显示数据,避免一次性加载所有数据导致内存压力过大。Valuelist源码的分析对于理解...
HQL是一种面向对象的查询语言,它允许开发者以对象和属性的方式编写查询,而不是直接操作数据库的SQL语句。然而,在实际应用中,可能会遇到一个常见问题:当使用ValueList传递参数到HQL语句时,由于ValueList默认将...
本章节主要聚焦于如何在C程序中使用INSERT语句一次性向表中插入一条记录,并展示了数据转换函数的用法。 插入语句的基本语法如下: ```sql INSERT INTO TableName (ColumnList) VALUES (ValueList) ``` 其中: - ...
在学习这一主题后,你将掌握如何在数据库中通过嵌入SQL语句来插入一行记录。 **INSERT语句语法:** 插入语句的基本格式如下: ```sql INSERT INTO TableName [ (ColumnList) ] VALUES (ValueList) ``` - `INSERT ...
在C#中,进行大数据批量插入到不同的数据库如SQL Server、Oracle、SQLite和MySQL时,开发者需要考虑每个数据库系统的特性和API。以下是对这四种数据库批量插入操作的详细讲解: 1. **SQL Server批量插入** SQL ...
#### 3.2 SQL 语句设计 - **级联删除**: - 删除学院前,先删除其对应的学生。 ```sql DELETE FROM student WHERE schid = ? ``` - 删除学院。 ```sql DELETE FROM school WHERE id = ? ``` - **级联更新**:...
//设置命令类型,一般SQL语句是Text,存储过程是StoredProcedure cmd.CommandType = DbCommandType.Text; //设置执行类型 cmd.ExecuteType = DbExecuteType.Reader; //执行命令,得到结果 ...
在Java的持久化框架Hibernate中,Criteria API是一种用于构建动态查询的强大工具,它允许开发者以编程方式构建查询,而不是直接写SQL语句。下面将详细解释Criteria API的使用及其相关概念。 1. Query By Example ...
本文将深入探讨如何在SQL Server环境中动态地为表添加或删除字段,并同时修改与这些字段相关的插入和更新存储过程。 首先,我们需要创建一个辅助表[A],它有两个字段:[ID](自增长)和[FieldName]。表[A]的设计...