ibatis.net 关于Hashtable 相关问题
xml文件配置
<!--动态查询,分页,指定查询字段,返回DataSet,并指定查询条件-->
<select id="SelectDSPageFilterWhereTPolicyAdvice" parameterClass="Hashtable" resultClass="System.Data.DataSet">
<![CDATA[SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY]]>
<isNotNull property="OrderStr">$OrderStr$</isNotNull>
<![CDATA[) AS R,]]>
<dynamic>
<isNotEmpty property="FieldNames">$FieldNames$</isNotEmpty>
<isEmpty prepend="PAID,PADATE,PATITLE,PACONTENT,REQUSERID,PASTATUS" property="FieldNames">$FieldNames$</isEmpty>
</dynamic>
<![CDATA[FROM TPOLICYADVICE]]>
<dynamic prepend="WHERE">
<isNotNull property="WhereStr">$WhereStr$</isNotNull>
</dynamic>
<![CDATA[) AS A WHERE R BETWEEN ((#PageIndex# - 1) * #PageSize# + 1) AND (#PageIndex# * #PageSize#) ]]>
</select>
接口 对应的方法
/// <summary>
/// 获取DataSet数据集,带过滤字段的DataSet,并分页,指定查询条件
/// </summary>
/// <param name="OrderStr">查询时的排序条件,如果不排序,则传null</param>
/// <param name="WhereStr">查询时的自定义条件,如:AGE=23</param>
/// <param name="PageIndex">当前第几页</param>
/// <param name="PageSize">每页多少条数据</param>
/// <param name="FiledNames">字段数据,查询所有的字段就传null</param>
/// <returns>符合条件的数据集DataSet</returns>
DataSet GetDSWhereTPolicyAdvice(string OrderStr, string WhereStr, int PageIndex, int PageSize,params string[] FiledNames);
实现接口的方法
public DataSet GetDSWhereTPolicyAdvice(string OrderStr,string WhereStr, int PageIndex, int PageSize, params string[] FiledNames)
{
Hashtable ht = new Hashtable();
ht.Add("PageIndex", PageIndex);
ht.Add("PageSize", PageSize);
ht.Add("OrderStr", OrderStr);
ht.Add("WhereStr", WhereStr);
ht.Add("FiledNames", ConvertData.ConvertParamsStringToString(",", FiledNames));
return QueryForDataSet("SelectDSPageFilterWhereTPolicyAdvice", ht);
}
功能描述:这个方法是通过 生成Hashtable,然后动态生成sql语句。
参数说明:PageIndex 当前第几页
PageSize 每页多少条数据
WhereStr 查询时的条件
FiledNames 查询的字段,添加到Hashtable中后,用逗号连接起来了
OrderStr 查询时排序条件
出现的问题:Hashtable添加了FiledNames ,但是对应的xml文件<isNotEmpty property="FieldNames">$FieldNames$</isNotEmpty>却没有动态生成。