1. 程式人生 > >如何結合IbatisNet的LIST遍歷實現模糊查詢

如何結合IbatisNet的LIST遍歷實現模糊查詢

mov earch home 輔助 iba pda person list() rate

我仿照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>

如何結合IbatisNet的LIST遍歷實現模糊查詢