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

[b]1.Query createQuery(String qlString)[/b]

根据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。


[b]2.Query
[/b]
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():如果查询语句是新增、删除或更改的语句,通过该方法执行更新操作。
通过下面测试方法进行说明:

@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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值