JPQL查询语句(Java Presistence Query Language)

来源:互联网 发布:网络渗透技术培训 编辑:程序博客网 时间:2024/05/22 13:01

1.Query createQuery(String qlString) 


根据JPA的查询语句创建一个查询对象Query,如下面的代码: 

Query q= em.createQuery(""SELECT t FROM Topic t WHERE t.topicTitle LIKE :topicTitle")");Query createNativeQuery(String sqlString) 

    使用本地数据库的SQL语句创建一个Query对象,Query通过getResultList()方法执行查询后,返回一个List结果集,每一行数据对应一个Vector。 


2.Query 

    JPA使用javax.persistence.Query接口代表一个查询实例,Query实例由EntityManager通过指定查询语句构建。该接口拥有众多执行数据查询的接口方法: 
n         Object getSingleResult():执行SELECT查询语句,并返回一个结果; 
n         List getResultList() :执行SELECT查询语句,并返回多个结果; 
n         Query setParameter(int position, Object value):通过参数位置号绑定查询语句中的参数,如果查询语句使用了命令参数,则可以使用Query setParameter(String name, Object value)方法绑定命名参数; 
n         Query setMaxResults(int maxResult):设置返回的最大结果数; 
n         int executeUpdate():如果查询语句是新增、删除或更改的语句,通过该方法执行更新操作。 
通过下面测试方法进行说明: 

Java代码  收藏代码
  1. @Test  
  2.     public void query1() {//单条查询  
  3.        EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");  
  4.        EntityManager em = factory.createEntityManager();  
  5.        Query query = em.createQuery("select count(t) from Buyer t where t.username = ?1");  
  6.        //select t 之类的是不能省略,当底层是hibernate时可以省略。  
  7.        //输入的参数可以用":username", "?1"问号加上序号,序号自己指定  
  8.        query.setParameter(1"aa");  
  9.        Buyer buyer = (Buyer)query.getSingleResult();  
  10. //当确定只有一条记录时用  
  11.        //System.out.println(buyer.getUsername());  
  12.        em.close();  
  13.        factory.close();  
  14.         
  15.     }  
  16.     @Test  
  17.     public void query2() {//多条查询  
  18.        EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");  
  19.        EntityManager em = factory.createEntityManager();  
  20.        Query query = em.createQuery("select t from Buyer t where t.username = :username");  
  21.        query.setParameter("username""susen");  
  22.        List<Buyer> buyers = query.getResultList();//有多条时用  
  23.        for(Buyer b : buyers){  
  24.            System.out.println(b.getUsername());  
  25.        }  
  26.        em.close();  
  27.        factory.close();  
  28.     }  
  29.     @Test  
  30.     public void query3() {//删除查询  
  31.        EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");  
  32.        EntityManager em = factory.createEntityManager();  
  33.        em.getTransaction().begin();  
  34.        em.createQuery("delete from Buyer t where t.username = ?1")  
  35.            .setParameter(1"susen")  
  36.            .executeUpdate();  
  37.        em.getTransaction().commit();  
  38.        em.close();  
  39.        factory.close();  
  40.     }  
  41.      
  42.     @Test  
  43.     public void query4() {//更新查询  
  44.        EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");  
  45.        EntityManager em = factory.createEntityManager();  
  46.        em.getTransaction().begin();  
  47.        em.createQuery("update Buyer t set t.password = ?1 where t.username=?2")  
  48.            .setParameter(1"111111")  
  49.            .setParameter(2"susen")  
  50.            .executeUpdate();  
  51.        em.getTransaction().commit();  
  52.        em.close();  
  53.     }