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;
}
}
下面是一些查询方法,基于上面这两个类
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")//按照班级名字分组
另外还有多种查询方法如外置命名查询,查询过滤器等
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); |
(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")//按照班级名字分组
另外还有多种查询方法如外置命名查询,查询过滤器等
相关文章推荐
- 10-hibernate实战 面向对象方式查询Criteria
- hibernate六种方式实现的查询
- Hibernate中通过HQL/JPQL查询的方式实现动态数据获取
- Hibernate学习-4-各种查询方式
- 小结Hibernate的查询方式(6种)
- Hibernate的三种查询方式
- hibernate全部查询方式以及批量抓取
- hibernate查询语句hql中的占位符?参数与命名参数:name设值方式搞混
- 六种方式实现hibernate查询,及IDE推荐
- Hibernate的条件查询的几种方式
- Hibernate查询的各种方式效率比较
- hibernate学习笔记6--Criteria查询方式、完整小练习(开发步骤)
- 在spring中(getHibernateTemplate())HQL常用查询方式介绍
- 六种方式实现hibernate查询
- hibernate select 查询方式总结
- hibernate 查询方式
- hibernate查询方式【2】:QBC查询,本地sql查询
- Hibernate模糊查询三种方式
- Hibernate框架的第四天(查询方式和策略)
- 六种方式实现hibernate查询