博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate查询
阅读量:5105 次
发布时间:2019-06-13

本文共 3120 字,大约阅读时间需要 10 分钟。

Hibernate查询

在Hibernate中提供了丰富的查询下面讲解一下其中的一种HQL

如果我们不知道所要寻找的对象的持久化标识(id),那么就无法通过load()和get()方法来获取持久化对象,就需要使用查询。

HQL的语法很像SQL的语法但是HQL是一种面向对象的查询语言,然而SQL的操作对象是数据表和列等数据对象,而HQL操作的对象是类,实例,属性。

HQL基础

1:HQL查询依赖于Query类,每一个Query实例对应一个查询的对象,使用HQL的步骤是:

1:获取Session对象

2:编写HQL语句

3:以HQL语句作为参数,调用Session的createQuery方法创建查询的对象。

4:如果HQL语句包含参数,调用Query的setXXX()方法为参数赋值。

5:调用Query对象的list等方法遍历查询结果。

实例代码:

/**     * 分页     */    @Test    public void testQuery7(){        String hql = "from Person p";        Query query = session.createQuery(hql);        query.setMaxResults(10);//设置分页返回的数据条数        query.setFirstResult(0);//表示才什么位置开始获取数据,注意会忽略0,从1开始。        List
personList = query.list(); for(Person p :personList){ System.out.println(p); } } @Test public void testQuery6(){ String hql = "from Person p"; Query query = session.createQuery(hql); //如果数据只要唯一的一条,可以使用uniqueResult()方法进行操作 //但是如果有超过 1 条数据,将报异常 Person person =(Person)query.uniqueResult(); System.out.println(person); } @Test public void testQuery5(){ String hql = "from Person p"; Query query = session.createQuery(hql); //获得查询结果集中的第一条记录(其实就是List.get(0)操作) Person person =(Person)query.list().get(0); System.out.println(person); } @Test public void testQuery4(){ //当查询需要返回的是一个对象时候可以在 hql中使用new Person(写需要获得的属性name) //但是需要注意:在Person类中一定要有一个与hql 中写的new Person(Type...) 对应的构造器 String hql = "select new Person(p.id, p.name) from Person p"; Query query = session.createQuery(hql); List
personList = query.list(); for(Person p : personList){ System.out.println(p); } } @Test public void testQuery3(){ String hql = "select p.id, p.name from Person p"; Query query = session.createQuery(hql); //如果查询返回的属性是多个属性,那么接收的时候list中的数据类型就是Object[]数据类型 //obj[0] = p.id //obj[1] = p.name List
persons = query.list(); for(Object[] objs : persons){ System.out.println("id="+objs[0]+"----name"+objs[1]); } } @Test public void testQuery2(){ String hql = "select p.name from Person p"; Query query = session.createQuery(hql); //如果查询返回的属性是单属性,那么接收的时候list中的数据类型就是属性的数据类型 List
personNames = query.list(); for(String name : personNames){ System.out.println(name); } } @Test public void testQuery(){ //sql: select * from t_person; //Hql语句是基于 面向对象 的方式进行操作的 //所以在写的时候 都是 对象 和 属性 String hql = "from Person"; Query query = session.createQuery(hql); /*List list = query.list(); for(Object o : list){ Person p = (Person)o; System.out.println(p); }*/ List
personList = query.list(); for(Person p : personList){ System.out.println(p); } }

 

 

转载于:https://www.cnblogs.com/aicpcode/p/4173741.html

你可能感兴趣的文章
红黑树 c++ 实现
查看>>
Android 获取网络链接类型
查看>>
报表服务框架:WEB前端UI
查看>>
5.9UDP客户端服务器-基于OK6410
查看>>
java自学基础、项目实战网站推荐
查看>>
软件包的使用
查看>>
linux中启动与终止lnmp的脚本
查看>>
BZOJ 1304: [CQOI2009]叶子的染色
查看>>
gdb中信号的处理[转]
查看>>
学习Javascript闭包(Closure)
查看>>
LeetCode【709. 转换成小写字母】
查看>>
toString()和toLocaleString()有什么区别
查看>>
【mybatis】学习笔记之conf.xml与mapper.xml配置
查看>>
Python基础学习Day3 数据类型的转换、int、str、bool、字符串的常用方法、for循环...
查看>>
Controller比较两个对象discs、outlets中的元素是否相等。相同则相应的checkbox为checked...
查看>>
Android中在布局中写ViewPager无法渲染出来的问题
查看>>
简单shellcode编写
查看>>
centos7配置yum源
查看>>
winform textbox提示历史记录
查看>>
SSM整合(spring mybatis)图书
查看>>