iBATIS模糊查詢的實(shí)現(xiàn)實(shí)例淺析
iBATIS模糊查詢的實(shí)現(xiàn)是如何的呢?讓我們先看看例子,仿照J(rèn)ava的Spring+Ibatis+Struct用Castle+IBatisNet+Asp.net的開(kāi)發(fā)框架的DAO的基類:BaseSqlMapDao內(nèi)定義了一個(gè)內(nèi)部類來(lái)輔助模糊查詢。內(nèi)部類代碼如下:
- 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模糊查詢的數(shù)據(jù)訪問(wèn)類的方法中使用方法如下:
例如數(shù)據(jù)訪問(wèn)類PersonInfoDao繼承自BaseSqlMapDao,方法
- /// <summary>
- /// 檢索求職者信息,根據(jù)關(guān)鍵字檢索
- /// </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>
iBATIS模糊查詢的情況就向你介紹到這里,希望通過(guò)例子能夠使你對(duì)iBATIS模糊查詢的是實(shí)現(xiàn)有所幫助。
【編輯推薦】