Query查询详解

本文介绍了Hibernate中的HQL查询方式,包括概念、方法使用及代码示例。HQL采用面向对象的方式,提供丰富的查询功能,并支持类似SQL的语法。文章还展示了如何利用HQL进行条件查询和分页。

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

 

Hibernate的核心接口 --- Query查询详解

一 概念介绍

1QueryHibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句。

2HQLHibernate Query Language的简写,HQL采用面向对象的查询方式,HQL查询提供了更加丰富和灵活的查询特征,因此HibernateHQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装

二 方法使用

Criteria的创建方式:

Criteria crit = session.createCriteria(DomainClass.class);

简单属性条件如:

criteria.add(Restrictions.eq(propertyName, value)),

criteria.add(Restrictions.eqProperty(propertyName,otherPropertyNa me))

//分页的查询

query.setFirstResult(0);//从第0行开始

query.setMaxResults(4);//最多显示几行记录

query.setString("n", name);//为占位符赋值

三 代码应用

public static void query(String name) {

Session session = null;

try {

session = HibernateUtil.getSession();

//定义hql语句,目的是:通过name查询所有

String queryString = "from User as user where user.name=:n";

Query query = session.createQuery(queryString);

query.setString("n", name);

//查询出所有的name相同的

List<User> list = query.list();// 得到所有的结果集

for (User u : list) {

System.out.println(u.toString());

}

} finally {

if (session != null) {

session.close();

}

}

}

注:

1.在定义Hql时,如果定义的语句为

String queryString = "from User as user where user.name=?";

在位占位符赋值的时候是:

query.setString(0, name);

这样会出现的问题是:如果为多个占位符赋值,可能会出错,所以用上面的方法比较保险,可读性好。

2.Hql语句中的分析:

1)查询的是所有的User所对应的记录

2user是别名

3name是类中的属性名

4name=:n是给?起的名字,为了防止赋值的时候乱

3.最重要的HQL的语句为

String queryString = "from User as user where user.name=:n"; Query query = session.createQuery(queryString);

query.setString("n", name);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值