【hibernate的多条件动态查询】

在hibernate中是支持多条件动态查询的。这种问题是非常实用的。比如说你做一个项目要实现一个复合查询。

  例如有这么一个界面:

 

  那么要实现这个查询,对于用户来说他的查询条件可能不健全。有可能只填写其中的1-3项。那么要实现这个查询。我们可以用hibernate的动态条件查询。

  下面我写一个例子。

  我有一张表叫user表。

  package com.fish.testdao;

  import java.sql.Date;

  public class User {

  int id;

  String name;

  int age;

  Date brithday;

  public String getName() {

  returnname;

  }

  public void setName(String name) {

  this.name = name;

  }

  public int getAge() {

  returnage;

  }

  public void setAge(int age) {

  this.age = age;

  }

  public Date getBrithday() {

  returnbrithday;

  }

  public void setBrithday(Date brithday) {

  this.brithday = brithday;

  }

  public int getId() {

  returnid;

  }

  public void setId(int id) {

  this.id = id;

  }

  }

  User.hbm.xml

  <?xmlversion="1.0"encoding="UTF-8"?>

  <!DOCTYPEhibernate-mapping PUBLIC

  "-//Hibernate/HibernateMapping DTD 3.0//EN"

  "hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

  <hibernate-mapping>

  <classname="com.fish.testdao.User">

  <idname="id" type="integer">

  <generatorclass="increment"></generator>

  </id>

  <propertyname="name"></property>

  <propertyname="age"></property>

  <propertyname="brithday"></property>

  </class>

  </hibernate-mapping>

  在XXX.cgf.xml注册一下。

  然后我们写一个测试类

  package com.fish.domain;

  import java.sql.Date;

  import java.util.List;

  import org.hibernate.Criteria;

  import org.hibernate.Session;

  import org.hibernate.Transaction;

  import org.hibernate.criterion.DetachedCriteria;

  import org.hibernate.criterion.Restrictions;

  import com.fish.testdao.User;

  import com.fish.util.HibernateSessionFactory;

  public class Test8 {

  public static void main(String[] args) {

  // addData();

  queryData();

  }

  // 添加数据

  public static void addData() {

  Session session = HibernateSessionFactory.getSession();

  Transaction transaction = session.beginTransaction();

  transaction.begin();

  for (int i = 0; i < 10; i++) {

  User user = new User();

  user.setAge(10 + i);

  user.setName("张" + i);

  user.setBrithday(Date.valueOf("1990-12-04"));

  session.save(user);

  }

  transaction.commit();

  session.close();

  }

posted on 2013-08-21 14:39  潇洒kman  阅读(451)  评论(0编辑  收藏  举报