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

通过上面的总结知道 在一个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





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值