设为首页 加入收藏

TOP

Hibernate的核心接口 --- Query查询详解
2014-11-24 13:55:54 来源: 作者: 【 】 浏览:1
Tags:Hibernate 核心 接口 --- Query 查询 详解

一 概念介绍


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


2.HQL是Hibernate Query Language的简写,HQL采用面向对象的查询方式,HQL查询提供了更加丰富和灵活的查询特征,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,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 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所对应的记录


(2)user是别名


(3)name是类中的属性名


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


3.最重要的HQL的语句为


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


query.setString("n", name);


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Hibernate关联映射---多对一实例.. 下一篇Hibernate框架的增删改查代码详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)
·到底应该用MySQL还是 (2025-12-24 15:18:11)
·进入Linux世界大门的 (2025-12-24 14:51:47)
·Download Linux | Li (2025-12-24 14:51:44)