现在的位置: 首页 > 综合 > 正文

Hibernate里面的完全面向对象的查询(Criteria 接口)

2014年07月15日 ⁄ 综合 ⁄ 共 3652字 ⁄ 字号 评论关闭

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;

import java.io.Serializable;

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>

抱歉!评论已关闭.