zl程序教程

您现在的位置是:首页 >  其他

当前栏目

第十一章 Hibernate的查询 Query Language(官方推荐使用)

官方hibernate 查询 推荐 Query language 第十一章 使用
2023-09-14 08:57:15 时间
p span >主要是通过 org.hibernate.Query接口的实例来使用HQL语句进行查询。

HQL语法:http://blog.csdn.net/p_3er/article/details/9064551 1、简单的查询(from+实体类名称)
Query query = session.createQuery("from User");

 List User list = query.list(); 

 for(User user : list){

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

 }



Query query = session.createQuery("from User as u where u.id 210");

 List User list = query.list(); 

 for(User user : list){

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

 }
这里只是简单的条件查询,更多可以通过查看hql语法进行操作。 3、预处理的HQL

使用?号来占位:

Query query = session.createQuery("from User as u where u.id ?");

 //这里第一个参数代表的是占位符的位置,从0开始。第二个是指这个位置的值。而setXXX()方法是根据值的类型来决定的。setString()、setDouble()、setInteger()等。

 query.setInteger(0, 210);

 List User list = query.list(); 

 for(User user : list){

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

 }

使用字符串(如:n)来占位:

Query query = session.createQuery("from User as u where u.id :n");

 //基本上和和使用?号占位方式一样。注意:这里占位符的前面还有一个:号。

 query.setInteger("n", 210);

 List User list = query.list(); 

 for(User user : list){

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

 }


4、根据外键作为条件查询
Query query = session.createQuery("from IdCard as idCard where idCard.person.id =15");

 List IdCard list = query.list(); 

 for(IdCard idCard : list){

 System.out.println(idCard.getCardNo());

 }


5、分页(重点)
Query query = session.createQuery("from User");

 query.setFirstResult(0); //从哪条记录开始

 query.setMaxResults(5); //取多少条记录

 List User list = query.list(); 

 for(User user : list){

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

//具体:

 Query query = session.createQuery(hql);

 Query q = session.createQuery("select count(*) from Person");

 Long count = (Long) q.uniqueResult();


查询记录只有一条的时候使用。

Query query = session.createQuery("select count(*)from User");

 Long count = (Long) query.uniqueResult();

 System.out.println(count);




SQL Optimizer 解析|青训营笔记 文章主要分为四个方面:1.大数据体系和 SQL;2.常见的查询优化器;3.查询优化器的社区开源实践;4.SQL 相关的前沿趋势。