如何结合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>

本文来自云栖社区合作伙伴“doNET跨平台”,了解相关信息可以关注“opendotnet”微信公众号

目录
相关文章
|
Java
Java8使用stream操作两个list根据某字段匹配再对其中一个list进行赋值
Java8使用stream操作两个list根据某字段匹配再对其中一个list进行赋值
2009 0
|
6月前
|
存储 Java BI
JavaSE&Collection集合
JavaSE&Collection集合
37 6
List集合如何分页
List集合如何分页(List集合转Page分页)
123 0
|
6月前
|
SQL XML Java
<foreach>元素中collection=list改成collection=array
<foreach>元素中collection=list改成collection=array
|
存储 Go
跳表(Skip List)
跳表(Skip List)是一种高效的数据结构,它结合了链表和二叉查找树的优点,可以在平均情况下实现 O(1) 的时间复杂度查询。跳表主要用于解决有序数据的高效存储和查找问题。
105 1
|
SQL Java 数据库连接
Mybatis使用collection标签实现一对多关联查询,返回结果集list中嵌套list
Mybatis使用collection标签实现一对多关联查询,返回结果集list中嵌套list
504 0
|
JavaScript 索引
vue 数组处理= 循环--查找过滤--添加删除--去重[.every()/.some()/.find()/.filter()/.forEach()/.map()]
vue 数组处理= 循环--查找过滤--添加删除--去重[.every()/.some()/.find()/.filter()/.forEach()/.map()]
321 0
vue 数组处理= 循环--查找过滤--添加删除--去重[.every()/.some()/.find()/.filter()/.forEach()/.map()]
List.stream() .distinct() 去重 List,字母大写方法
List.stream() .distinct() 去重 List,字母大写方法
142 0
|
存储 算法 安全
Python3:两个 list 一一对应,将一个 list 排序,要求另一个 list 随之排序
Python3:两个 list 一一对应,将一个 list 排序,要求另一个 list 随之排序
Python3:两个 list 一一对应,将一个 list 排序,要求另一个 list 随之排序