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 閱讀(2597) 評論(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
          主站蜘蛛池模板: 美姑县| 鹤峰县| 晋城| 凤阳县| 长宁区| 隆化县| 思茅市| 偏关县| 靖江市| 石门县| 称多县| 高碑店市| 南宁市| 普格县| 临夏市| 榆中县| 贵德县| 合作市| 麟游县| 乐至县| 资溪县| 望江县| 成安县| 那曲县| 拉孜县| 永善县| 济阳县| 青河县| 黔西县| 桃源县| 四平市| 东兰县| 根河市| 鄂州市| 甘南县| 黄石市| 库尔勒市| 广饶县| 绵阳市| 天峻县| 乌审旗|