您的位置:首页 > 其它

hibernate的查询方式

2009-08-10 15:26 357 查看
这里要用到连个类Student类和Classess类,代码如下

Student类

import java.util.Date;

public class Student
{
private int id;
private String name;
private Classess classess;
private Date createTime;
public Students(){}
public Students(int id,String name)
{
this.id=id;
this.name=name;
}

public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Classess getClassess() {
return classess;
}
public void setClassess(Classess classess) {
this.classess = classess;
}
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;
}

}

class类

import java.util.Set;

public class Classess
{
private int id;
private String name;
private Set students;

public Set getStudents() {
return students;
}
public void setStudents(Set students) {
this.students = students;
}
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;
}

}
下面是一些查询方法,基于上面这两个类

1.get() and load() 方法

  session.get(Clazz, id);
  session.load(Clazz, id);

2.HQL查询

(1)原生SQL查询

session.createSQLQuery("select * from t_student")//t_student是数据库的一个表名

(2)实体对象查询

session.createQuery(" from Student")//Student是类名

session.createQuery("from Students as s")



session.createQuery(" from Student s")

session.createQuery("select s from Student as s")

(3)简单属性查询

session.createQuery("select name from Student")//查询Student对象的name

session.createQuery("select id,name from Student)//查询Student对象的name,id

session.createQuery("select s.id,s.name from Student s")//同上

session.createQuery("select new Students(id,name) from Students")//同上需要在Student类构造Student(id,name)方法

(4)条件查询

session.createQuery("select id,name from Student where name like '%1%'")

session.createQuery("select id,name from Student where name like ?").setParameter(0, "%1%")

(5)分页查询

session.createQuery("from Student")
.setFirstResult(0)
.setMaxResults(2)
.list();

(6)对象导航查询

session.createQuery("select s.name from Student s where s.classess.name like '%1%'")

(7)连接查询

session.createQuery("select c.name, s.name from Student s inner join s.classess c")//默认内联

发出的sql语句: Hibernate: select classess1_.name as col_0_0_, students0_.name as col_1_0_ from t_students students0_ inner join t_classess classess1_ on students0_.classessid=classess1_.id

session.createQuery("select c.name, s.name from Classess c left join c.students s")//左连接查询

session.createQuery("select c.name, s.name from Classess c right join c.students s")//右连接查询

(8)统计查询

List students=session.createQuery("select count(*) from Student")
.list();
Long count=(Long)students.get(0);

或者用

int count=(Integer)session.createQuery("select count(*) from Student").uniqueResult()//单一值

session.createQuery("select c.name,count(s) from Students s join s.classess c"+
"group by c.name order by c.name")//按照班级名字分组

另外还有多种查询方法如外置命名查询,查询过滤器等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: