<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

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲日韩aⅴ在线视频| 国产啪亚洲国产精品无码 | 国偷自产一区二区免费视频| 国产日产亚洲系列最新| 国产乱子伦精品免费视频| h视频在线观看免费网站| 国产裸模视频免费区无码| 亚洲AV无码专区电影在线观看 | 亚洲av永久无码精品秋霞电影秋| 午夜男人一级毛片免费| 国产亚洲一区二区手机在线观看| 嫩草在线视频www免费看| 亚洲一区精品中文字幕| 亚洲人成电影网站免费| 亚洲一区二区三区高清| 免费v片在线观看视频网站| 亚洲熟妇成人精品一区| 亚洲伦乱亚洲h视频| 美女视频黄频a免费观看| 久久国产成人亚洲精品影院 | 免费成人在线电影| 精品亚洲麻豆1区2区3区| 无码中文字幕av免费放| 香港一级毛片免费看| 久久国产亚洲观看| 无码一区二区三区AV免费| 美女免费视频一区二区三区| 亚洲VA中文字幕无码毛片| 9久9久女女免费精品视频在线观看| 国产精品无码亚洲一区二区三区| 久久久久亚洲精品无码网址| 亚洲毛片在线免费观看| 国产成人久久精品亚洲小说| 国产亚洲婷婷香蕉久久精品 | 一个人免费视频在线观看www| 亚洲成年人电影在线观看| 免费国产a国产片高清网站| 日本高清免费观看| 亚洲高清乱码午夜电影网| 国产亚洲欧洲精品| 免费无码黄网站在线观看|