Hibernate里面的完全面向对象的查询方法
/**
* 条件查询
*
* @return
*/
public void select() {
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sf = configuration.buildSessionFactory();
Session session = sf.openSession();
Transaction t = session.beginTransaction();
Person person = null;
Criteria c = session.createCriteria(Person.class);
// Projection p = null;
//多個條件查詢,id在20-33之間的,年齡在是20歲的,工資大於300000的人
// c.add(Restrictions.between("pid",20, 33)).add(Restrictions.ge("page",
// 20)).add(Restrictions.conjunction().add(Restrictions.gt("psalary",
// 300000)));
//查询年龄最大的人
// c.setProjection(Projections.max("page"));
//查询平均工资
// c.setProjection(Projections.avg("psalary")).list();
//按工资排序
// Criteria c = c.addOrder(Order.desc("psalary"));
// 查询健身部共有多少人
// c.add(Restrictions.eq("dept",
// "健身部")).setProjection(Projections.rowCount());
// 查询学术部的工资总和
// c.add(Restrictions.eq("dept",
// "学术部")).setProjection(Projections.projectionList().add(Projections.sum("psalary")));
// 查询学术部门工资最高的人
// c.add(Restrictions.eq("dept",
// "学术部")).setProjection(Projections.max("psalary")).list();
// 查询每个部门的工资的和
/*
* c.setProjection(Projections.projectionList().add(Projections.sum("psalary"))
* .add(Projections.groupProperty("dept"))).list();
*
* List list = c.list();
*
* int i = list.size(); System.out.println(i);
* System.out.println(list.get(0)); for ( int j = 0 ; j < i ; j ++ ) {
* Object obj[] = (Object [])list.get(j);
*
* for ( int k = 0 ; k < obj.length ; k ++ ) { System.out.println(
* obj[k] ); } }
*/
// 查询比xiao工资高的人
/* Property p = null;
DetachedCriteria d = DetachedCriteria.forClass(Person.class);
d.setProjection(Property.forName("psalary")).add(
Restrictions.eq("pname", "xiao"));
List list = c.add(Property.forName("psalary").gt(d)).list();
System.out.println(list.size());
for (int i = 0; i < list.size(); i++) {
Person person1 = (Person) list.get(i);
System.out.println(person1.getPname() + ":" + person1.getPsalary());
}*/
//查詢學術部比xiao工資高的人
DetachedCriteria avgWeight = DetachedCriteria.forClass(Person.class)
.setProjection( Property.forName("psalary")).add(Restrictions.eq("pname", "hehe"));
List list = session.createCriteria(Person.class)
.add( Property.forName("psalary").gt(avgWeight)).add(Restrictions.eq("dept","健身部")).list();
System.out.println("---->>"+list.size());
}
Person类
package com.test.hibernate.pojo;
imp
public class Person implements Serializable{
private Integer pid ;
private String pname ;
private int page ;
private int psalary ;
private String dept ;
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getPsalary() {
return psalary;
}
public void setPsalary(int psalary) {
this.psalary = psalary;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
}
person.hbm.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.test.hibernate.pojo.Person">
<id name="pid" type="java.lang.Integer">
<column name="pid" length="10"></column>
<generator </id>
<property name="pname" type="java.lang.String">
<column name="pname" length="30"></column>
</property>
<property name="page" type="java.lang.Integer">
<column name="page" length="3"></column>
</property>
<property name="psalary" type="java.lang.Integer">
<column name="psalary" length="8"></column>
</property>
<property name="dept" type="java.lang.String">
<column name="dept" length="8"></column>
</property>
</class>
</hibernate-mapping>