JAVA基础:Hibernate外键关联与HQL语法
1.实体查询
String hql = " from TUser";
执行这条语句会返回TUser以及TUser子类的纪录。
注: 如果 TUser 类具有外键, 查询会报错!
解决方法: select 别名.属性 from 类 as 别名. 没有别名.属性仍然报错!
hql = "from java.lang.Object"
会返回数据库中所有库表的纪录。
where 语句
hql = "from TUser as user where user.name=’yyy’";
其中,as可以省略也一样
hql = "from TUser user where user.name=’yyy’";
where子句中,我们可以通过比较运算符设定条件,如:
=, <>, >, <, >=, <=, between, not between, in, not in, is, like等。
2.属性查询
List list = session.createQuery("select user.name, user.age from TUser as user").list();
还可以在HQL中动态构造对象实例的方法,将数据封装。
List list = session.createQuery("select new TUser(user.name, user.age) from TUser as user").list();
Iterator it = list.iterator();
while(it.hasNext() ) {
TUser user = (TUser)it.next();
System.out.println(user.getName());
}
但是要注意这里的TUser对象只是对name和age属性的封装,其他状态均未赋值,所以不能用它来进行更新操作。
也可以在HQL的Select子句中使用统计函数
"select count(*) ,min(user.age) from TUser as user"
也可以使用distinct关键字来删除重复纪录。
select distinct user.name from TUser as user;
3.实体的更新与删除
hibernate 2中需要先查询出实体,设置属性后再保存。
hibernate 3中,提供了更灵活的方式(bulk delete/update)
更新:
Query query = session.createQuery("update TUser set age=18 where id=1");
query.executeUpdate();
删除:
session.createQuery("delete from TUser where age>=18");
query.executeUpdate();
4.分组与排序
Order by子句:
from TUser user order by user.name, user.age desc
Group by子句和Having子句
"select count(user), user.age from TUser user group by user.age having count(user)>10"
5.参数邦定
通过顺序占位符?来填充参数:
1)hibernate 2 中通过session.find方法来填充
session.find("from TUser user where user.name=?", "Erica", Hibernate.STRING);
多个参数的情况:
Object[] args = new Object[] {"Erica", new Integer(20)};
Type[] types = new Type{Hibernate.STRING, Hibernate.INTEGER};
session.find("from TUser user where user.name=? and user.age=?", args, types);
2)通过Query接口进 进行参数填充:
Query query = session.createQuery("from TUser user where user.name=? and user.age>?");
query.setString(0,"Erica");
query.setInteger(1, 20);
通过引用占位符来填充参数:
String hql = "from TUser where name=:name";
Query query = session.createQuery(hql);
query.setParameter("name","Erica");
甚至可以将查询条件封装为一个JavaBean
class UserQuery {
private String name;
private Integer age;
//getter and setter
}
String hql = "from TUser where name=:name and age=:age";
Query query = session.createQuery(hql);
UserQuery uq = new UserQuery();
uq.setName("Erica");
uq.setAge(new Integer(20));
query.setProperties(uq); //会调用里面的getter?
query.iterate();
6.联合查询
也可以使用 inner join,left outer join, right out join, full join
排列组合:form TUser, TAddress
转自:http://www.51test.net/show/469304.html
转载于:https://www.cnblogs.com/wangzhanjianshe/archive/2009/01/09/2327090.html
JAVA基础:Hibernate外键关联与HQL语法相关推荐
- java如何写外键关联_JAVA基础:Hibernate外键关联与HQL语法
例如对于TUser类 1.实体查询 String hql = " from TUser"; 执行这条语句会返回TUser以及TUser子类的纪录. 注: 如果 TUser 类具有外 ...
- Java hibernate假外键_JAVA基础:Hibernate外键关联与HQL语法
例如对于TUser类 1.实体查询 String hql = " from TUser"; 执行这条语句会返回TUser以及TUser子类的纪录. 注: 如果 TUser 类具有外 ...
- Java hibernate假外键_浅谈hibernate急迫加载问题(多重外键关联)
数据库结构如下 strategy中有外键member_id(关联member表)外键strategy_category(关联category表)而member表中有外键position_id(关联po ...
- hibernate一对一主键唯一外键关联(一)
1.新建工程项目hibernate_one2one_ufk_1,添加hibernate所需Jar包和数据库驱动Jar包. 2.编写工具类HibernateUtils.java和ExportDB.jav ...
- hibernate一对一主键唯一外键关联(二)
1.新建工程项目hibernate_one2one_ufk_2,添加hibernate所需的Jar包和数据库驱动的Jar包. 2.编写工具类HibernatUtils.java和ExportDB.ja ...
- hibernate one2one 唯一外键关联(双向关联)
hibernate的一对一唯一外键关联映射(双向关联 Person <------->IdCard) 一对一唯一外键关联采用<one - to -one>标签映射,必须指定标签 ...
- Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联...
2018-11-10 22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...
- JPA关系映射系列一:one-to-one外键关联
2019独角兽企业重金招聘Python工程师标准>>> SpringDataJPA是Spring Data的一个子项目,通过提供基于JPA的Repository极大的减少了JPA作为 ...
- mysql 删除表数据_主外键关联表的数据删除策略
说个题外话,我从来没想过会被拼多多这款软件所魔怔,他的这种社交营销的能力,实在是太强了,在怂恿之下,开始给儿子拼个这个, 各位有空帮砍下,https://w.url.cn/s/AzlPAB9,或者扫下 ...
最新文章
- python 编程入门-Python编程入门电子书教程,看这几个就够了
- DPDK vhost库(十一)
- 打开CEPH内核DOUT日志输出
- HTML5制作斑马线表格,JavaScript实现的斑马线表格效果【隔行变色】
- JavaScript中map函数和filter的简单举例
- ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境
- [Python学习] 专题二.条件语句和循环语句的基础知识
- html5点击按钮出现弹窗 怎么实现_HTML5游戏开发过程中的二三事
- Cocoa依赖包管理工具
- JavaScript学习笔记(二)--流程控制语句
- 如何将多个word文档的内容合并到一个文档 多html转word
- C#:WebBrowser中伪造referer,为何对流量统计器无效?
- Axure RP 9安装与使用
- 【linux内核分析与应用-陈莉君】动手实践--内核多任务并发实例
- 【编译原理】 根据语法树 写出对应的短语 直接短语 句柄 构造产生式
- 一款Img图床模板码 扩展性超强纯Html+响应式
- XILINX DDR3 VIVADO(二)写模块
- 推荐电影:朴赞郁的《老男孩》
- 中基鸿业什么是净值型理财产品
- HTML5讲解与演示转载整理