HQL query Criteria 查询方式 入门

本文介绍了Hibernate中的两种查询方式——HQL和Criteria。HQL是一种面向对象的查询语言,它查询的是对象而不是表,支持多态。通过示例展示了如何使用HQL进行简单查询、设置参数以及实现分页。同时,还介绍了Criteria查询,包括创建约束条件和实现分页的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 HQL是一种面向对象的查询语言,和SQL不一样
1  HQL中的对象名区分大小写,(除JAVA类和属性名字)
2 HQL查的是对象而不是表,并且支持多态,HQL主要依赖Query来操作

如根据名字查询一个类:
HQL:
"from User as user where user.name=?";
这是一个最简单的查询
查询的是对象不是表 而是User类 User只能是类名

query 查询:

1 创建hql
String queryString = "form Noticeinfo as notice where notice.noticetitle=?";

2创建query
Query query =s.createQuery(queryString);


3设置参数
     query.setString(0, title); 位置是从0开始的,跟JDBC不一样 JDBC参数下标是从1开始的
      或者:
     命名参数形式:
     hql:      form Noticeinfo as notice where notice.noticetitle=:title
     query.setString (name, val);
      
4查询
query.uniqueResult() or query.list(); 
当你知道返回的结果只是一个对象的时候 用uniqueResult

当返回多个对象
List<Noticeinfo> list = query.list();
查询是调用query的list方法 返回对象集合,作用相当于JDBC中excutequery类似
然后便利集合就可以得到数据了

public void query(String title){
String queryString = "from Noticeinfo as notice where notice.noticetitle=?";
Query query =s.createQuery(queryString);
query.setString(0, title);
List<Noticeinfo> list = query.list();
for (Noticeinfo n :list) { 
System.out.println(n.getNotice());
}
}


NoticeinfoDao dao = new NoticeinfoDao();
dao.query("学习");


HQL支持多态
如果 hql为 from Object  则hibernate会将数据库所有的表都查一遍,因为所有的类都是Object

query其他方法:
1 query实现分页:
query.setFirstResult(0);
query.setMaxResults(10);



Criteria查询方式:

//1创建criteria 关联类
Criteria cri = s.createCriteria(Noticeinfo.class);

//2创建约束条件 noticetitle = title
cri.add(Restrictions.eq("noticetitle", title));

add 是与的关系 or或的关系,可以调用or();方法

Restriction这个类可以提供很多静态的约束方法
eq等于  gt大于 lt 小于   like   ge ...etc

//查询 和query一样
List list = cri.list();
Criteria的分页和query也是一样的。

hibernate的基本的基本操作就是这些了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值