关于hibernate的查询

 

为什么建议hibernate查询全部字段

一般而言,要查询什么字段就查询什么字段,不要select * from表,但是在hibernate,我们其实可以不遵循这个规则,建议我们把所有属性都查询出来(可以封装成一个实体类),这样就省去了二次封装的过程,虽然浪费了一些资源,但利大于弊。当然如果一定要查询单个字段的话,那么只能从list中提取数据

 

hibernate的uniqueResult方法

如果你确定查询的是唯一的结果的话,那么建议使用uniqueResult方法,该结果返回一个对象(例如在验证用户登录中可以使用)

 

为什么说hibernate简化了sql的查询过程

看一个例子

在三表查询中 查询某选课号为3的学生的姓名,这里用到了三表查询,如果使用原生的sql语句要用到三级查询,而使用hql语句的话则是一句语句(用面对对象的思想)

select student.name,student.age from stutocourse where id=1;

关于hibernate的分页

session.createQuery("from Student").setFirstResult(i).setMaxResults(j).list();

其中setFirstResult()中的参数是从第几条开始,setMaxResults()中的参数是取几条。

查询后的返回对象的类型

如果查询的是一个字段的话list就存放的是一个object,如果查询的是多个字段的话那么存放的是object[];

 

关于hibernate的参数查询

可以使用query.setString("位置","值")来设置 这也意味着可以提取为一个工具类 另外一个方法是where name=:name的写法 其赋值的方法是 .setString("name","值")本质是都是一样的

 

特别注意

hql语句中没有select * 的写法 这是与sql不一样的

 

关于hibernate提供的更新删除的方法

executeUpdate是hibernate提供的方法该方法返回的是影响的行数;

 

posted on 2018-10-07 22:00  往事随风~~  阅读(264)  评论(0编辑  收藏  举报