您的位置:首页 > 产品设计 > UI/UE

JPQL查询语句(Java Presistence Query Language)(转)

2015-09-06 18:53 429 查看


JPQL查询语句(Java Presistence Query Language)(转)

博客分类:

JPA



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代码


@Test

public void query1() {//单条查询

EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");

EntityManager em = factory.createEntityManager();

Query query = em.createQuery("select count(t) from Buyer t where t.username = ?1");

//select t 之类的是不能省略,当底层是hibernate时可以省略。

//输入的参数可以用":username", "?1"问号加上序号,序号自己指定

query.setParameter(1, "aa");

Buyer buyer = (Buyer)query.getSingleResult();

//当确定只有一条记录时用

//System.out.println(buyer.getUsername());

em.close();

factory.close();



}

@Test

public void query2() {//多条查询

EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");

EntityManager em = factory.createEntityManager();

Query query = em.createQuery("select t from Buyer t where t.username = :username");

query.setParameter("username", "susen");

List<Buyer> buyers = query.getResultList();//有多条时用

for(Buyer b : buyers){

System.out.println(b.getUsername());

}

em.close();

factory.close();

}

@Test

public void query3() {//删除查询

EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");

EntityManager em = factory.createEntityManager();

em.getTransaction().begin();

em.createQuery("delete from Buyer t where t.username = ?1")

.setParameter(1, "susen")

.executeUpdate();

em.getTransaction().commit();

em.close();

factory.close();

}



@Test

public void query4() {//更新查询

EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");

EntityManager em = factory.createEntityManager();

em.getTransaction().begin();

em.createQuery("update Buyer t set t.password = ?1 where t.username=?2")

.setParameter(1, "111111")

.setParameter(2, "susen")

.executeUpdate();

em.getTransaction().commit();

em.close();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: