您的位置:首页 > 其它

hibernate学习之session常用方法和HQL语句的学习

2016-09-25 14:03 459 查看
通过上面的总结知道 在一个hibernate中,是通过session来进行与数据库之间的通信的 因此我们要了解session的一些常用的方法 

除了上文中提到过得session.save()方法 

对象在session中总共有三种状态 瞬时态 持久态和游离态 session的save方法就是将瞬时态的变成持久态的 ,

session.delete()方法就相当于数据库中的delete方法 用于将持久态的变为游离态3



这张图可以很好的作为解释

同时session也具有update() save() delete() 方法

get方法用户通过标识符获得指定类的持久化对象 

User user = (User) session.get(User.class, "123456");若没有 则返回为空
load方法和get方法一样 通过标识符获得指定类的持久化对象 但是要求持久化类的对象必须存在 否则就会产生异常

User us = (User) session.load(User.class, "123456");createQuery方法就是和HQL语句联合搭配起来使用的
首先我们可以根据名称类设置参数

Query query = session.createQuery("from user where age > :userAge");
//根据名称设置integer的参数
query.setInteger("userAge", 25);

要记住根据名称前要加一个冒号 来表示参数 
第二种方法 也可以根据位置来设置参数

Query qu = session.createQuery("from user where age > ?");
//根据位置来设置 第一参数的位置为0
qu.setInteger(0, 25);

默认的第一个问号的位置是0
在这里建议使用名字来设置参数 这样可以提高代码的可读性

list()犯法用以返回java的list类型的数据

List user = (List) query.list();query的uniqueResult()方法用于返回唯一的结果 确保记录只有一个记录满足查询条件下才可以进行
query.executeUpdate()

可以支持HQL语句的更新和删除的操作
setFirstResult()方法获取记录的第一个方法 如果传入20 则表示提取第21个

setMaxResult()方法设置记录的最大记录数,在分页时有非常好的作用

HQL语句本省是不区分大小写的 但是在HQL语句中的类名和属性名是要区分大小写的

例如查询一个实体

String hql = "from user";

也可以为持久化类起别名
String hql1 = "from user as u";

加入where语句来表明条件
//限制查询的条件 不等于是<>
String hql2 = "from user as u where sex = '男' and age > 18";

只获取name属性
//只获取name属性
String hql3 = "select name from user";

一次获取多个属性
//也可以一次索引多个属性
String hql4 = "select name,age from u where sex = '男'";
//执行跟新

执行更新
//执行跟新
String hql8 = "update user set name = 'caokai'";聚合函数的应用
//HQL中的聚合函数
String hql5 = "select count(*),max(age),min(age),avg(age) from User";

也可以进行去重
//distinct来去除重复的数据
String hql6 = "select distinct from user";分组和排序
//分组和排序
String hql7 = "select avg(age) from user order by name"; 个人认为和SQL语句还是蛮相似的
HQL语句较好的
http://www.cnblogs.com/focusChen/articles/2401892.html http://blog.csdn.net/v123411739/article/details/28644007
session总结较好的
http://blog.csdn.net/shrek_xu/article/details/740991
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: