<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

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 大胆亚洲人体视频| 18禁黄网站禁片免费观看不卡 | 一级中文字幕免费乱码专区| 好爽…又高潮了免费毛片| 亚洲成A人片在线播放器| 国产麻豆视频免费观看| 亚洲一区二区三区播放在线| 久久电影网午夜鲁丝片免费| 亚洲欧美不卡高清在线| 情侣视频精品免费的国产| 国产亚洲蜜芽精品久久| 亚洲国产精品一区二区第四页| 看一级毛片免费观看视频| 亚洲黄黄黄网站在线观看| 两性色午夜视频免费网| 亚洲国产a∨无码中文777| 免费精品无码AV片在线观看| 亚洲白色白色在线播放| 最近免费中文字幕4| 综合一区自拍亚洲综合图区| 亚洲偷自拍拍综合网| 久久99热精品免费观看动漫| 亚洲性69影院在线观看| 午夜成人免费视频| 九九久久国产精品免费热6| 亚洲高清国产拍精品26U| 久久WWW色情成人免费观看| 日韩在线一区二区三区免费视频| 国产亚洲一区二区精品| 久九九精品免费视频| 国产精品亚洲二区在线| 亚洲成年轻人电影网站www| 成年女人午夜毛片免费看| 免费看又黄又爽又猛的视频软件| 久久精品亚洲日本佐佐木明希| 国产一卡2卡3卡4卡无卡免费视频| 国产成人亚洲精品91专区高清| 久久青青成人亚洲精品| 午夜一级免费视频| 少妇性饥渴无码A区免费| 亚洲中文字幕无码一去台湾|