iBATIS模糊查询的实现实例浅析

iBATIS模糊查询的实现是如何的呢?让我们先看看例子,仿照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;  
    }  
   }  
  } 

  在需要使用iBATIS模糊查询的数据访问类的方法中使用方法如下:

  例如数据访问类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> 

你可能感兴趣的:(spring,ibatis,asp.net,mobile,asp)