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

我仿照Java的Spring+Ibatis+Struct用Castle+IBatisNet+Asp.net的开发框架的DAO的基类:BaseSqlMapDao内定义了一个内部类来辅助模糊查询。内部类代码如下:

protected internal  class KeyWordSearch 
  {
   private IList keywordList = new ArrayList();
   public KeyWordSearch(String keywords) 
   {
    StringTokenizer splitter = new StringTokenizer(keywords, " ", false);
    string token = null;
    IEnumerator enumerator = splitter.GetEnumerator();
    while (enumerator.MoveNext()) 
    {
     token = (string)enumerator.Current;
     keywordList.Add("%" + token + "%");
    }
   }
   public IList KeywordList 
   {
    get
    {
     return keywordList;
    }
   }
  }

在需要使用模糊查询的数据访问类的方法中使用方法如下: 例如数据访问类PersonInfoDao继承自BaseSqlMapDao,方法

  /// <summary>
  /// 检索求职者信息,根据关键字检索
  /// </summary>
  public IList SearchPersonInfoList(string keywords)
  {
   object parameterObject = new KeyWordSearch(keywords);
   return this.ExecuteQueryForList("SearchPersonList", parameterObject);
  }

<select id="SearchPersonList" resultMap="PersonResult">
   select UserId,UserName,Sex,Birthday,Mobile,HomeTel,EMail,LivingArea,
            RegisteredLocus,GraduateSchool,MajorSpecialty,JobExperience,MonthlyPay,
            Special,Resume,city.code,city.name,person.NationId,Nation.NationName,
            person.JobId,job.jobName,person.degreeId,degree.DegreeName
            from Career_PersonInfo person ,Career_Nation nation,Career_Job job,Career_City city,Career_Degree degree
            where person.CityCode = city.code and person.NationId = nation.NationId and person.jobid = job.jobId
            and person.degreeId = degree.degreeId
            <dynamic prepend="and"> 
    <iterate property="KeywordList" open="" close="" conjunction="OR">
     lower(job.jobName) like #KeywordList[]# 
    </iterate>
   </dynamic>
  </select>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码匠的流水账

聊聊storm的ICommitterTridentSpout

storm-core-1.2.2-sources.jar!/org/apache/storm/trident/spout/ICommitterTridentSp...

1083
来自专栏程序员宝库

Java 8 时间 API 快速入门

Java 8 出来很久了,各位也可能已经在用了,不过其中新的时间日期 API 可能很少人用,甚至不知道怎么上手。本文快速介绍一下其中的主要的类的概念和用法。 一...

3015
来自专栏码匠的流水账

聊聊storm的ICommitterTridentSpout

storm-core-1.2.2-sources.jar!/org/apache/storm/trident/spout/ICommitterTridentSp...

822
来自专栏码匠的流水账

聊聊flink的RichParallelSourceFunction

flink-streaming-java_2.11-1.6.2-sources.jar!/org/apache/flink/streaming/api/func...

2031
来自专栏Hellovass 的博客

魔改 TypeAdapterFactory

感慨:Retrofit2 虽好,但是,有时候总感觉 Java 这门语言还是美中不足啊!

1421
来自专栏Clive的技术分享

代码重构的方法

1844
来自专栏Netkiller

Struts Ajax Json

Netkiller Java 手札 Java, Servlet, JavaBean ... 5.4. Ajax + JSON struts.xml 中加入 ...

2623
来自专栏后端之路

来自Google的瓜娃简介之Collections2

注:以下分析均基于Guava18 背景 除了我们会如此命名XXXService2 原来Google也会这样命名O(∩_∩)O哈! 由于jdk已经占据了Colle...

3055
来自专栏智能大石头

C++返回值优化RVO

返回值优化,是一种属于编译器的技术,它通过转换源代码和对象的创建来加快源代码的执行速度。RVO = return value optimization。 测试...

2959
来自专栏菩提树下的杨过

机器学习笔记(6):多类逻辑回归-使用gluon

上一篇演示了纯手动添加隐藏层,这次使用gluon让代码更精减,代码来自:https://zh.gluon.ai/chapter_supervised-learn...

2569

扫码关注云+社区