alancxx

          ------簡單就是美

          hibernate Restrictions用法 MatchMode.ANYWHERE

          方法

          說明

          Restrictions.eq

          Restrictions.allEq

          利用Map來進行多個等于的限制

          Restrictions.gt

          Restrictions.ge

          >=

          Restrictions.lt

          Restrictions.le

          <=

          Restrictions.between

          BETWEEN

          Restrictions.like

          LIKE

          Restrictions.in

          in

          Restrictions.and

          and

          Restrictions.or

          or

          Restrictions.sqlRestriction

          用SQL限定查詢


          QBC常用限定方法

          Restrictions.eq --> equal,等于.

          Restrictions.allEq --> 參數為Map對象,使用key/value進行多個等于的比對,相當于多個Restrictions.eq 的效果

          Restrictions.gt --> great-than > 大于

          Restrictions.ge --> great-equal >= 大于等于

          Restrictions.lt --> less-than, < 小于

          Restrictions.le --> less-equal <= 小于等于

          Restrictions.between --> 對應SQL的between子句

          Restrictions.like --> 對應SQL的LIKE子句

          Restrictions.in --> 對應SQL的in子句

          Restrictions.and --> and 關系

          Restrictions.or --> or 關系

          Restrictions.isNull --> 判斷屬性是否為空,為空則返回true

          Restrictions.isNotNull --> 與isNull相反

          Restrictions.sqlRestriction --> SQL限定的查詢

          Order.asc --> 根據傳入的字段進行升序排序

          Order.desc --> 根據傳入的字段進行降序排序

          MatchMode.EXACT --> 字符串精確匹配.相當于"like 'value'"

          MatchMode.ANYWHERE --> 字符串在中間匹配.相當于"like '%value%'"

          MatchMode.START --> 字符串在最前面的位置.相當于"like 'value%'"

          MatchMode.END --> 字符串在最后面的位置.相當于"like '%value'"

          例子
          查詢年齡在20-30歲之間的所有學生對象
          List list = session.createCriteria(Student.class)
                 .add(Restrictions.between("age",new Integer(20),new Integer(30)).list();
          查詢學生姓名在AAA,BBB,CCC之間的學生對象
          String[] names = {"AAA","BBB","CCC"};
          List list = session.createCriteria(Student.class)
                 .add(Restrictions.in("name",names)).list();
          查詢年齡為空的學生對象
          List list = session.createCriteria(Student.class)
                 .add(Restrictions.isNull("age")).list();
          查詢年齡等于20或者年齡為空的學生對象
          List list = session.createCriteria(Student.class)
                 .add(Restrictions.or(Restrictions.eq("age",new Integer(20)),
                           Restrictions.isNull("age")).list();

          --------------------------------------------------------------------
          使用QBC實現動態查詢 
          public List findStudents(String name,int age){

          Criteria criteria = session.createCriteria(Student.class);
          if(name != null){
             criteria.add(Restrictions.liek("name",name,MatchMode.ANYWHERE));
          }
          if(age != 0){
             criteria.add(Restrictions.eq("age",new Integer(age)));
          }
          criteria.addOrder(Order.asc("name"));//根據名字升序排列
          return criteria.list();
          }

          -----------------------------------------------------------------------------------

          今天用了寫hibernate高級查詢時用了Restrictions(當然Expression也是可以以的)這個類.感覺不錯.
          下面的代碼寫的不易讀.其實核心就是一句
          Restrictions.or(Restrictions.like(),Restrictions.or(Restrictions.like,........))
          里面的or可以無限加的.還是比較好用

          Session session = getHibernateTemplate().getSessionFactory()
                          .openSession();
                  Criteria criteria = session.createCriteria(Film.class);
                  List<Film> list = criteria.add(
                      Restrictions.or(Restrictions.like("description", key,MatchMode.ANYWHERE),
                      Restrictions.or(Restrictions.like("name", key,MatchMode.ANYWHERE),
                          Restrictions.or(    Restrictions.like("direct", key,MatchMode.ANYWHERE),
                          Restrictions.or(Restrictions.like("mainplay",key,MatchMode.ANYWHERE),
                                  Restrictions.like("filearea", key,MatchMode.ANYWHERE)))))).list();

                  session.close();
                  return list;

          posted on 2011-05-04 14:09 蜂鳥 閱讀(4351) 評論(0)  編輯  收藏 所屬分類: openSource

          公告

           掌握了XML就掌握了未來!

          導航

          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統計

          常用鏈接

          留言簿

          隨筆檔案(1)

          文章分類(17)

          文章檔案(17)

          搜索

          最新評論

          主站蜘蛛池模板: 苍南县| 天峻县| 平湖市| 子长县| 长白| 景洪市| 霍州市| 石狮市| 云梦县| 万山特区| 宁蒗| 嘉峪关市| 昔阳县| 高青县| 湛江市| 西贡区| 芒康县| 峨边| 萨嘎县| 登封市| 建昌县| 出国| 那坡县| 香港 | 潼关县| 广元市| 河西区| 玉门市| 米易县| 贵溪市| 东辽县| 忻城县| 浦江县| 田东县| 平陆县| 禹城市| 遂平县| 边坝县| 同德县| 昌平区| 东宁县|