gembin

          OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

          HBase, Hadoop, ZooKeeper, Cassandra

          Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

          There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

          About Me

           

          JPA查詢

          1.查詢所有信息
          Query q = em.createQuery("select u from Userinfo u");
          List list =q.getResultList();
          如果查詢結果是多個,應該使用Query接口的getResultList方法,如果查詢結果只有一個,可以使用Query接口的getSingleResult方法。
          命名查詢:
          @NamedQuery(name = "findAllUser", query = "SELECT u FROM Userinfo u")
          name表示該查詢的名字,query是查詢語句本身。命名查詢可以寫在實體類中,第一次課生成的實體類中就有多個命名查詢。
          對于命名查詢可以使用EntityManager的createNamedQuery方法,要訪問上面的查詢可以使用下面的代碼:
          Query q = em.createNamedQuery("findAllUser");
          List<Userinfo> list =q.getResultList();
          createNamedQuery方法的參數命名查詢的名字。
          2.使用Query完成分頁
          分頁顯示就是每次只顯示部分對象的信息。要顯示哪一部分信息取決于從什么地方開始顯示,顯示到什么地方。Query接口可以控制要獲取的記錄,有兩個方法來設置要獲取的第一條記錄和最后一條記錄。兩個方法的定義分別如下:
          setMaxResults(int maxResult),參數是要查詢的最大記錄數。
          setFirstResult(int startposition),參數是第一個要查詢的記錄的位置。
          通過這兩個屬性完成分頁顯示。
          注意:分頁必須用apache-openjpa-1.0.2-binary.zip , 1.0.1不起作用是個Bug
          3.條件查詢
          條件查詢,需要在查詢語句中使用變量,可以有兩種方式:位置參數和名字參數。
          位置參數
          在位置參數中,使用“?”號加上參數的序號的方式表示參數。
          例,根據用戶名username查詢用戶。
          SELECT u FROM Userinfo u where u.username = ?1
          1表示第一個參數。
          在位置參數中,可以使用多個參數,可以用不同的數字表示。同一個參數可以在查詢中出現多次。
          名字參數
          在名字參數種,使用“:”號加上參數的名字的方式表示參數。
          例,根據用戶類型查詢用戶。
          SELECT u FROM Userinfo u WHERE u.usertype = :usertype
          “:”號后面的usertype就是參數的名字。
          不管是位置參數還是名字參數都可以在命名查詢中使用。
          位置參數的賦值通過Query接口的相應方法完成,主要方法如下:
          public Query setParameter(int position,Object value)
          public Query setParameter(int position,Date value,TemporalType temporalType)
          public Query setParameter(int position,Calendar value,TemporalType temporalType)
          用于名字參數的賦值方法基本相同,只是第一個參數用于指定參數的名字。主要方法如下:
          public Query setParameter(String name,Object value)
          public Query setParameter(String name,Date value,TemporalType temporalType)
          public Query setParameter(String name,Calendar value,TemporalType temporalType)
          例1:使用前面介紹的根據用戶名進行查詢的語句。
          Query q = em.createQuery("SELECT u FROM Userinfo u where u.username = ?1");
          q = q.setParameter(1,username);
          List<Userinfo> list =q.getResultList();
          例2:使用前面介紹的根據用戶類型進行查詢的語句。
          Query q = em.createQuery("SELECT u FROM Userinfo u WHERE u.usertype = :usertype");
          q = q.setParameter("usertype",usertype);
          List<Userinfo> list =q.getResultList();
           Query接口的方法參考書上370頁Query接口部分。關于EntityManager接口的方法參考書上358頁EntityManager接口部分。

          posted on 2008-03-20 01:50 gembin 閱讀(2595) 評論(0)  編輯  收藏 所屬分類: JavaEE

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類(440)

          隨筆檔案(378)

          文章檔案(6)

          新聞檔案(1)

          相冊

          收藏夾(9)

          Adobe

          Android

          AS3

          Blog-Links

          Build

          Design Pattern

          Eclipse

          Favorite Links

          Flickr

          Game Dev

          HBase

          Identity Management

          IT resources

          JEE

          Language

          OpenID

          OSGi

          SOA

          Version Control

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          free counters
          主站蜘蛛池模板: 株洲县| 无锡市| 卢氏县| 香格里拉县| 昆山市| 古蔺县| 客服| 崇阳县| 略阳县| 永丰县| 宁陕县| 葵青区| 深水埗区| 内丘县| 广宗县| 三门县| 桦南县| 商水县| 扎赉特旗| 开封县| 依兰县| 武川县| 巴林左旗| 革吉县| 武鸣县| 丹东市| 苍梧县| 屏边| 团风县| 秦皇岛市| 那坡县| 无锡市| 沐川县| 额尔古纳市| 博湖县| 滦平县| 和顺县| 同江市| 白城市| 栖霞市| 荣昌县|