JPA基礎(九):使用JPQL語句進行查詢

來源:互聯網
上載者:User
文章目錄
  • 查詢語言(JPQL)
查詢語言(JPQL)

這是持久化操作中很重要的一個方面,通過物件導向而非面向資料庫的查詢語言查詢資料,避免程式的SQL語句緊密耦合。(跟HQL真的很像- -)

 1     @Test
2 public void query(){
3 EntityManagerFactory factory=Persistence.createEntityManagerFactory("sample");
4 EntityManager em=factory.createEntityManager();
5 Query query=em.createQuery("select o from Person o where o.id=?1");
6 query.setParameter(1, 3);
7 Person p=(Person) query.getSingleResult();
8 System.out.println(p.getName());
9 em.close();
10 factory.close();
11 }

只是查詢的時候不用開啟事務,只有當真正改變資料的時候需要開啟事務,“?1”的用的是預留位置的形式,1 表示索引號,不推薦使用字串拼接的方式,形如 "select o from Person o where o.id="+id 這是非常不安全的,容易引起非法注入。


 1     @Test
2 public void deleteQuery(){
3 EntityManagerFactory factory=Persistence.createEntityManagerFactory("sample");
4 EntityManager em=factory.createEntityManager();
5 em.getTransaction().begin();
6 Query query=em.createQuery("delete from Person o where o.id=?1");
7 query.setParameter(1, 3);
8 query.executeUpdate();
9 em.getTransaction().commit();
10 em.close();
11 factory.close();
12 }

查詢刪除時需要開啟事務


 

 1     @Test
2 public void updateQuery(){
3 EntityManagerFactory factory=Persistence.createEntityManagerFactory("sample");
4 EntityManager em=factory.createEntityManager();
5 em.getTransaction().begin();
6 Query query=em.createQuery("update Person o set o.name=:name where o.id=:id");
7 query.setParameter("name", "brian");
8 query.setParameter("id", 1);
9 query.executeUpdate();
10 em.getTransaction().commit();
11 em.close();
12 factory.close();
13 }

這裡用的是具名引數的形式,再通過setParameter方法將參數設定進去。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.