- 浏览: 97583 次
- 性别:
文章分类
最新评论
-
chinrui:
iamaj2eeprogrammer 写道顶一个 。。。。。。 ...
日志规范 -
iamaj2eeprogrammer:
顶一个 。。。。。。。。。。
日志规范 -
chinrui:
如果Eclipse安装过Android的开发插件,可能会有一定 ...
使用Ant编译生成Hadoop的Eclipse插件
HQL的简单使用2
1、 Category类
package com.edu.hpu; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Category { private int id; private String name; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
2、 Msg类
package com.edu.hpu; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @Entity public class Msg { private int id; private String cont; private Topic topic; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCont() { return cont; } public void setCont(String cont) { this.cont = cont; } @ManyToOne @JoinColumn(name="topic_ID") public Topic getTopic() { return topic; } public void setTopic(Topic topic) { this.topic = topic; } }
3、 Topic类
package com.edu.hpu; import java.util.Date; import java.util.HashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; @Entity public class Topic { private int id; private String title; private Date date; private Category category; private Set<Msg> msgs = new HashSet<Msg>(); @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="category_ID") public Category getCategory() { return category; } public void setCategory(Category category) { this.category = category; } @OneToMany(mappedBy="topic") public Set<Msg> getMsgs() { return msgs; } public void setMsgs(Set<Msg> msgs) { this.msgs = msgs; } }
4、 测试类
package com.edu.hpu; import java.util.Date; import java.util.List; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class TestClass { private static SessionFactory sf = null; @BeforeClass public static void beforeClass() { Configuration conf = new Configuration().configure(); ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(conf.getProperties()).buildServiceRegistry(); sf = conf.buildSessionFactory(sr); } @Test public void testExport() { new SchemaExport(new Configuration().configure()).create(true ,true); } @Test public void testSave() { Session session = sf.openSession(); session.beginTransaction(); for(int i = 0; i < 10; i++) { Category c = new Category(); c.setName("c" + i); session.save(c); } for(int i = 0; i < 10; i++) { Category c = new Category(); c.setId(1); Topic t = new Topic(); t.setTitle("t" + i); t.setCategory(c); session.save(t); } for(int i = 0; i < 10; i++) { Topic t = new Topic(); t.setId(1); Msg m = new Msg(); m.setTopic(t); m.setCont("m" + i); session.save(m); } session.getTransaction().commit(); session.close(); } @Test public void testHQL_19() { Session s = sf.getCurrentSession(); s.beginTransaction(); Query q = s.createQuery("from Topic t where t.msgs is empty"); List<Topic> ts = q.list(); for(Topic t : ts) { System.out.println(t.getTitle()); } s.getTransaction().commit(); } //like % 代表零个或多个 @Test public void testHQL_20() { Session s = sf.getCurrentSession(); s.beginTransaction(); Query q = s.createQuery("from Topic t where t.title like '%5'"); List<Topic> ts = q.list(); for(Topic t : ts) { System.out.println(t.getTitle()); } s.getTransaction().commit(); } //like % 代表一个或多个 @Test public void testHQL_21() { Session s = sf.getCurrentSession(); s.beginTransaction(); Query q = s.createQuery("from Topic t where t.title like '_5'"); List<Topic> ts = q.list(); for(Topic t : ts) { System.out.println(t.getTitle()); } s.getTransaction().commit(); } @Test public void testHQL_22() { Session s = sf.getCurrentSession(); s.beginTransaction(); Query q = s.createQuery("select current_time , current_date , current_timestamp , t.id from Topic t"); List<Object[]> objs = (List<Object[]>)q.list(); for(Object[] obj : objs) { System.out.println(obj[0] + " " + obj[1] + " " + obj[2] + " " + obj[3]); } s.getTransaction().commit(); } @Test public void testHQL_23() { Session s = sf.getCurrentSession(); s.beginTransaction(); Query q = s.createQuery("from Topic t where t.date < :now"); q.setParameter("now", new Date()); List<Topic> ts = (List<Topic>)q.list(); for(Topic t : ts) { System.out.println(t.getId() + " " + t.getTitle()); } s.getTransaction().commit(); } @Test public void testHQL_24() { Session s = sf.getCurrentSession(); s.beginTransaction(); Query q = s.createQuery("select t.title , count(*) from Topic t group by t.title"); List<Object[]> objs = (List<Object[]>)q.list(); for(Object[] obj : objs) { System.out.println(obj[0] + " " + obj[1]); } s.getTransaction().commit(); } @Test public void testHQL_25() { Session s = sf.getCurrentSession(); s.beginTransaction(); Query q = s.createQuery("select t.title , count(*) from Topic t group by t.title having count(*) >= 1"); List<Object[]> objs = (List<Object[]>)q.list(); for(Object[] obj : objs) { System.out.println(obj[0] + " " + obj[1]); } s.getTransaction().commit(); } @Test public void testHQL_26() { Session s = sf.getCurrentSession(); s.beginTransaction(); Query q = s.createQuery("from Topic t where t.id < (select avg(t.id) from Topic t)"); List<Topic> ts = q.list(); for(Topic t : ts) { System.out.println(t.getId() + " " + t.getTitle()); } s.getTransaction().commit(); } @Test public void testHQL_27() { Session s = sf.getCurrentSession(); s.beginTransaction(); Query q = s.createQuery("from Topic t where t.id < ALL (select t.id from Topic t where mod(t.id , 2) = 0)"); List<Topic> ts = (List<Topic>)q.list(); for(Topic t : ts) { System.out.println(t.getId() + " " + t.getTitle()); } s.getTransaction().commit(); } //exists 可以用in来实现,如果exists 执行效率高 @Test public void testHQL_28() { Session s = sf.getCurrentSession(); s.beginTransaction(); //Query q = s.createQuery("from Topic t where not exists (select m.id from Msg m where m.topic.id = t.id)"); Query q = s.createQuery("from Topic t where t.id in (select t.id from Msg m where m.topic.id != t.id)"); List<Topic> ts = (List<Topic>)q.list(); for(Topic t : ts) { System.out.println(t.getId() + " " + t.getTitle()); } s.getTransaction().commit(); } @Test public void testHQL_29() { Session s = sf.getCurrentSession(); s.beginTransaction(); Query q = s.createQuery("update Topic t set t.title = upper(t.title)"); q.executeUpdate(); q = s.createQuery("from Topic"); List<Topic> ts = (List<Topic>)q.list(); for(Topic t : ts) { System.out.println(t.getId() + " " + t.getTitle()); } s.createQuery("update Topic t set t.title = lower(t.title)" ).executeUpdate(); s.getTransaction().commit(); } @Test public void testHQL_30() { Session s = sf.getCurrentSession(); s.beginTransaction(); SQLQuery sq = s.createSQLQuery("select * from category limit 2,4").addEntity(Category.class); List<Category> cs = (List<Category>)sq.list(); for(Category c : cs) { System.out.println(c.getId() + " " + c.getName()); } s.getTransaction().commit(); } @AfterClass public static void afterClass() { sf.close(); } }
发表评论
-
SpringMVC与Mybatis集成开发环境搭建
2014-08-04 11:14 1188SpringMVC与Mybatis集成开发环境搭建 ... -
struts处理AJAX请求
2013-07-06 10:56 924struts处理AJAX请求 1、使用AJAX向stru ... -
struts里面的方法校验
2013-06-02 10:13 840struts里面的方法校验 一、全局方法检验 1、校验 ... -
struts多文件上传
2013-06-02 09:15 868struts多文件上传 1、文件载入页面 & ... -
struts中的文件上传
2013-06-01 20:19 972struts中的文件上传 1、上传页面代码 <b ... -
Spring AOP 简单使用
2013-05-04 17:30 1337Spring AOP 在beans.xml进行配置,声明aop ... -
Spring IoC Annotation 的简单使用
2013-05-04 17:22 1055Spring IOC Annotation 进行Annotat ... -
Spring IOC XML Configuration
2013-05-04 17:10 1222Spring Note Spring Introdution ... -
Spring DBCP 数据库连接池配置
2013-05-04 17:01 3204Spring dbcp 数据库连接池 ... -
Spring IOC(DI)模拟
2013-05-03 19:37 879Spring DI Simulation 解释:IOC Inv ... -
Hibernate 里面的1+N问题
2013-04-28 09:02 868Hibernate之1+N问题 1、 Category类 pa ... -
Hibernate 二级缓存举例(4.2 Final版)
2013-04-28 09:02 1183Hibernate 4.2里面的缓存 1、 hibernate ... -
Annotation使用两个foreign key做联合主键
2013-04-26 09:57 1503Annotation使用两个foreign key做联合主键 ... -
hibernate HQL的简单使用一
2013-04-26 08:51 1044Hibernate中的HQL使用 1、 建立相应的关系表 Ca ... -
struts2 学习笔记
2013-04-25 08:07 1349Structs学习笔记 一、建立structs项目的时候需要 ... -
JSP 自定义标签
2013-04-24 22:47 875JSP自定义标签(<mytag:mylove /> ...
相关推荐
HQL作为Hibernate的核心组成部分,不仅提供了与Criteria查询类似的面向对象封装,还具有更丰富的查询特性,使得复杂的查询操作变得简单易懂。 【HQL基本结构】 HQL查询语句主要包括以下几个部分: 1. `SELECT`:...
总之,HQL作为Hibernate的重要组成部分,为开发者提供了强大且灵活的数据检索能力,使得在Java应用中操作数据库变得更加简单和直观。在实际开发中,掌握HQL的使用能极大地提升开发效率和代码质量。
标题:“全面解析HQL语句 非常详细直接的HQL语句的功能介绍” 描述:“非常详细直接实用的HQL语句的功能介绍看过的人保准都说好” 本篇文章将深入探讨HQL(Hibernate Query Language)的核心功能及其在数据查询...
- HQL的查询结果通常是一个对象列表,而不是简单的值列表。 - 虽然HQL与SQL相似,但并非所有SQL特性都适用于HQL,因为HQL是面向对象的,而非面向关系的。 - HQL可以和Criteria API结合使用,提供更强大的查询能力。 ...
### Spring框架中HQL语句的使用方法 在学习Spring框架与Hibernate集成的过程中,掌握HQL(Hibernate Query Language)的使用方法是十分重要的。本文档将详细介绍如何在Spring环境中运用HQL进行数据查询操作,包括...
例如,一个简单的HQL查询可能如下所示: ```sql FROM Employee e WHERE e.name = 'John' ``` 这条语句将返回所有名字为'John'的员工对象。 3. **HQL的查询类型** - **基本查询**:如上所示,从一个实体类中...
HQL 中的单表查询使用 FROM 语句,例如:FROM eg.Cat as cat,其中 cat 只是一个别名,为了用其他子语句的时候书写简单。 2.多表查询 HQL 中的多表查询使用 FROM 语句,例如:FROM eg.Cat as cat, eg.Dog as dog。...
2. **使用Session的缓存机制**:利用Hibernate的二级缓存功能来缓存待插入的数据,减少与数据库的交互次数,提高性能。 3. **清理Session缓存**:在完成一次批量插入后,及时清除Session中的缓存数据,释放内存资源...
2. 避免在HQL中使用SQL函数:尽量用Hibernate提供的函数,以确保跨数据库兼容性。 3. 优化查询性能:合理设计数据库索引,避免全表扫描,尽量减少JOIN操作。 总之,Hibernate-HQL是Java开发中处理数据库查询的重要...
#### 二、HQL查询流程 在进行HQL查询时,通常遵循以下步骤: 1. **获取Hibernate Session对象**:首先,需要通过SessionFactory或当前线程获取Session对象,这是与数据库交互的主要接口。 2. **编写HQL语句**:...
- `auto_import`配置允许在Hql中使用类的简单名称,若设为`true`,则无需指定完整的包名。 2. **Hql查询操作** - **普通查询**:`FROM`后面跟类名,如`String hql="FROM User";` - **带过滤条件的查询**:`WHERE...
#### 二、HQL的基本用法 1. **获取Hibernate Session** - 在执行任何HQL查询之前,首先需要通过`SessionFactory`获取一个`Session`实例。 ```java Session session = HibernateUtil.getSessionFactory()....
例如,假设我们有一个`Student`类,包含`name`和`age`属性,一个简单的HQL查询可能如下: ```sql SELECT s FROM Student s WHERE s.age > 18 ``` 这个查询会返回所有年龄大于18岁的学生对象。 **2. HQL的SELECT...
#### 二、数据库表连接概述 在理解Hibernate HQL关联查询之前,我们需要先回顾一下数据库表连接的基本概念及其分类。数据库表连接主要分为以下几种: 1. **内连接(Inner Join)**:只返回两个表中满足连接条件的...
#### 二、HQL的大小写敏感性 HQL在处理关键字时并不区分大小写,这意味着`SELECT`、`SeLeCT`和`sELEct`被视为相同。然而,当涉及到Java类名和属性名时,则需要遵循Java的命名规则,即区分大小写。例如,`org....
String hql = "from User user where (user.age % 2) = 1"; // 组合条件查询 String hql = "from User user where user.age = 20 and user.name like '%zx%'"; ``` #### 二、更新与删除 HQL支持数据的更新与删除...
这个简单的HQL语句用于查询`DesignActivity`表中的所有记录。这里的`DesignActivity`应该是指代一个实体类名,该类映射到名为`DesignActivity`的数据表。此查询返回所有`DesignActivity`实体的列表。 #### 2. 查询...
在HQL中,你可以像SQL一样执行简单的查询,例如: ```java from Employee e ``` 这个查询会返回所有`Employee`实体的列表。 ### 2. **条件查询** HQL支持多种条件语句,如`WHERE`、`AND`、`OR`、`BETWEEN`、`IN`...
注意,执行`from Student, Course`这样的HQL会返回两个对象的笛卡尔积,而非简单的联合查询,通常在实际应用中很少使用。 3. 属性查询: HQL支持查询单个或多个属性。例如,查询所有学生的姓名和年龄: ```java // ...