<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ⅴ亚洲情无码AV| a毛片免费全部在线播放**| ZZIJZZIJ亚洲日本少妇JIZJIZ | 亚洲宅男永久在线| 99视频有精品视频免费观看| 亚洲AV无码成人专区片在线观看 | 亚洲AV无码专区在线播放中文| 亚洲黄片手机免费观看| 国产成人高清亚洲| 国产麻豆一精品一AV一免费| 亚洲av永久无码精品古装片| 麻豆成人久久精品二区三区免费 | 麻豆亚洲AV永久无码精品久久| 久久免费的精品国产V∧| 亚洲国产视频一区| 日韩视频在线免费观看| 老司机午夜精品视频在线观看免费| 亚洲国产一区明星换脸| 最好免费观看高清在线| 久久亚洲精品无码aⅴ大香 | 黄色网址免费在线观看| 亚洲AV日韩AV鸥美在线观看| 97碰公开在线观看免费视频| 亚洲熟妇无码一区二区三区| 亚洲无线一二三四区手机| 四虎影视在线影院在线观看免费视频| 亚洲欧洲日产国码在线观看| 最近最新的免费中文字幕| 特级做a爰片毛片免费看| 亚洲gv猛男gv无码男同短文| 国产在线观看免费观看不卡| 色老头综合免费视频| 亚洲视频在线播放| 国产成人精品免费视频软件| 成人精品一区二区三区不卡免费看| 亚洲精品高清国产麻豆专区| 亚洲AV无码成人精品区大在线| 十九岁在线观看免费完整版电影| 亚洲中文无码mv| 日本亚洲视频在线|