如何结合IbatisNet的LIST遍历实现模糊查询

 我来答
time陌言成殇
推荐于2016-05-22 · TA获得超过8.4万个赞
知道大有可为答主
回答量:1.4万
采纳率:91%
帮助的人:9321万
展开全部

BaseSqlMapDao内定义了一个内部类来辅助模糊查询。内部类代码如下:  

 

       protected class KeyWordSearch  
        {  
            private IList<string> _keywords = new List<string>();  
  
            public KeyWordSearch(IEnumerable<string> keywords)  
            {  
                foreach (var keyword in keywords)  
                {  
                    _keywords.Add(GetLikeKeyword(keyword));  
                }  
            }  
  
            public IList<string> KeywordList  
            {  
                get { return _keywords; }  
            }  
  
            public static string GetLikeKeyword(string keyword)  
            {  
                return string.Format("%{0}%", keyword);  
            }  
        }  
  
在使用Dao类型使用  
           Hashtable htargs = new Hashtable(2);  
           htargs.Add("parentNo", parentNo);  
           object likekeywordObj = new KeyWordSearch(new string[] {"关键字1", "关键字2"});  
           htargs.Add("likekeyword", likekeywordObj);  
  
Map文件:  
  <dynamic>  
    <isNotNull prepend="AND" property="likekeyword">  
      <iterate property="likekeyword.KeywordList" open="(" close=")" conjunction="OR">  
        NAME LIKE #likekeyword.KeywordList[]#  
      </iterate>  
    </isNotNull>  
  </dynamic>


单个项的模糊查询可以直接使用 

KeyWordSearch.GetLikeKeyword方法  
  
<pre name="code" class="html">htargs.Add("contact", KeyWordSearch.GetLikeKeyword("刘"));  
  
    <isNotEmpty prepend="AND" property="contact">  
      CONTACT LIKE #contact#  
    </isNotEmpty>  
</pre>  
<pre></pre>  
<p></p>  
<pre></pre>  
<p></p>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式