<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Rory's Blog
    Happy study,Happy work,Happy life
    posts - 22,  comments - 46,  trackbacks - 0
    不知道大家有沒有碰到,還是沒有這種需求。就是用like來查詢,我們沒有用Lucene,Compass這種全文索引的方案,我們只是簡單的添加%進行like查詢。用戶搜索的時候就使用*和?來代表任意和一個。所以要對"%"和"_"進行轉義,我們使用的是oracle數據庫。sql語句看起來可能是這樣的。
    SELECT?*?FROM?t_user?where?nickname?like?'%Goo\_D'?escape?'\'
    這里對_進行轉義了。因為用戶昵稱包含下劃線,如果不進行轉義就表示一個任意字符。有時候我們可能還需要對%進行轉義。同樣的方法在%前加\% 但是比起普通的like語句。多了一個聲明轉義符的語句。所以我們會想到這樣的語句
    DetachedCriteria?criteria?=?DetachedCriteria.forClass(User.class);
    criteria.add(Restrictions.like(
    "nickname",?user.getNickname()+"'?escape'\"));
    但是這樣是不管用的。
    接下來可能會想到使用Hibernate3的原生sql查詢,其實我們不需要這樣做。我們還是使用Criteria條件查詢。
    criteria.add(Restrictions.sqlRestriction("{alias}.nickname?like???escape'/'",?StringUtil.escapeSQLLike(user.getNickname()),?Hibernate.STRING));
    這樣Hibernate產生的語句就是我們想要的語句了。
    ????/**
    ?????*?轉義like語句中的
    ?????*?<code>'_'</code><code>'%'</code>
    ?????*?將<code>'?'</code>轉成sql的<code>'/_'</code>
    ?????*?將<code>'%'</code>轉成sql的<code>'/%'</code>
    ?????*?<p>
    ?????*???例如搜索<code>?aa*bb?c_d%f</code>將轉化成<br/>
    ?????*???<code>_aa%bb_c/_d/%f</code>
    ?????*?</p>
    ?????*?
    @param?likeStr
    ?????*?
    @return
    ?????*?
    @author?<a?href="http://jdkcn.com">somebody</a>
    ?????
    */
    ????
    public?static?String?escapeSQLLike(String?likeStr)?{
    ????????String?str?
    =?StringUtils.replace(likeStr,?"_",?"/_");
    ????????str?
    =?StringUtils.replace(str,?"%",????"/%");
    ????????str?
    =?StringUtils.replace(str,?"?",?"_");
    ????????str?
    =?StringUtils.replace(str,?"*",?"%");
    ????????
    return?str;
    ????}

    創造共用協議:署名,非商業,保持一致?? 除經特別注明外,本文章版權歸莫多泡泡所有.
    署名,非商業用途,保持一致.???somebody(莫多)
    posted on 2006-10-16 23:29 莫多 閱讀(2491) 評論(1)  編輯  收藏 所屬分類: Hibernate

    FeedBack:
    # re: 關于Hibernate3的escape解決方法
    2006-10-18 14:40 | 123bingbing
    增開7群,號碼 30440732
    8群 30756649
    9群 30178567
    10群 28694497

    我們的qq群:15096318 學習程序的都可以來  回復  更多評論
      

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類(27)

    隨筆檔案(22)

    Friends

    搜索

    •  

    積分與排名

    • 積分 - 62211
    • 排名 - 845

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品乱码久久久久久蜜桃不卡| 免费人成视频在线观看不卡| 久久久久亚洲av无码专区蜜芽| 拍拍拍无挡免费视频网站| 亚洲精品在线视频观看| 最近2019中文字幕免费直播| 精品亚洲aⅴ在线观看| 亚洲日韩精品无码专区| 国产成人无码免费视频97| 国产亚洲午夜精品| 亚洲AV无码专区电影在线观看 | 0588影视手机免费看片| 免费人成网站在线高清| 免费人成网上在线观看| 成年女人免费v片| 亚洲综合小说久久另类区| 1000部啪啪未满十八勿入免费| 亚洲中文字幕在线第六区| AAA日本高清在线播放免费观看| 亚洲AV无码一区二区二三区软件| 久久国产高潮流白浆免费观看| 亚洲欧洲久久精品| 日本久久久免费高清| 亚洲av无码不卡久久| 18pao国产成视频永久免费| 亚洲娇小性xxxx| 日韩欧毛片免费视频| 亚洲AV女人18毛片水真多| 午夜毛片不卡免费观看视频| 菠萝菠萝蜜在线免费视频| 亚洲AV无码精品色午夜果冻不卡| 黄色网址免费大全| 亚洲国产成人在线视频| 亚洲三级在线免费观看| 亚洲国产精品18久久久久久| 免费无码又爽又刺激高潮的视频| 亚洲sm另类一区二区三区| 久久亚洲精品视频| 日韩一级在线播放免费观看| 国产免费无码一区二区| 久久精品亚洲精品国产色婷 |