知识大全 hibernate的多条件动态查询

Posted 条件

篇首语:休言女子非英物,夜夜龙泉壁上鸣。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 hibernate的多条件动态查询相关的知识,希望对你有一定的参考价值。

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

  例如有这么一个界面

  

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

  下面我写一个例子

  我有一张表叫user表

  package 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= encoding= UTF ?>

  <!DOCTYPEhibernate mapping PUBLIC

   //Hibernate/HibernateMapping DTD //EN

   hiber/hibernate mapping dtd >

  <hibernate mapping>

  <classname= 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 fish domain;

  import java sql Date;

  import java util List;

  import hibernate Criteria;

  import hibernate Session;

  import hibernate Transaction;

  import hibernate criterion DetachedCriteria;

  import hibernate criterion Restrictions;

  import fish testdao User;

  import fish util HibernateSessionFactory;

  public class Test

  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 = ; i < ; i++)

  User user = new User();

  user setAge( + i);

  user setName( 张 + i);

  user setBrithday(Date valueOf( ));

  session save(user);

  

  mit();

  session close();

  

  // 查询数据

  public static void queryData()

  String outName = 张 ;

  int outAge = ;

  Date outDate = null;

  Session session = HibernateSessionFactory getSession();

  DetachedCriteria dc = DetachedCriteria forClass(User class);

  if (outName !=null)

  dc add(Restrictions eq( name outName));

  

  if (outAge > )

  dc add(Restrictions eq( age outAge));

  

  if (outDate !=null)

  dc add(Restrictions eq( brithday outDate));

  

  Criteria c = dc getExecutableCriteria(session);

  List<User> list = c list();

  for (User i : list)

  System out println(i getName() +   + i getAge());

  

  

  

  看看测试类中的查询方法 如果String outName = 张 ;

  intoutAge = ;

  DateoutDate = null;

  这三个条件是通过从前台或者是用户输入的那么就实现了多条件的动态查询

  我们看看数据库的信息

  

  显然这个里面有一条记录是符合的 我们看看输出的结果是什么

  张   

cha138/Article/program/Java/ky/201311/28511

相关参考

知识大全 ibatis动态多条件组合查询以及模糊查询

  这几天在学习使用IBATIS突然要使用模糊查询以及动态多个条件查询按照自己的想法试了很久都没解决这个问题  首先是模糊查询的问题开始时我使用如下条件:select*fromuserwherenam

知识大全 Hibernate的多对一和一对多操作实例

Hibernate的多对一和一对多操作实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hib

知识大全 Hibernate 本地SQL查询

Hibernate本地SQL查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本地SQL查询来

知识大全 Hibernate复合主键查询

Hibernate复合主键查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibernate

知识大全 Hibernate数据查询

Hibernate数据查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  HibernateQu

知识大全 Hibernate 高级查询技巧

Hibernate高级查询技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  集合过滤:  对于

知识大全 Hibernate高级查询实战

Hibernate高级查询实战  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  大家知道在Hibe

知识大全 Hibernate属性查询简介

Hibernate属性查询简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文向大家介绍Hi

知识大全 Hibernate 命名查询NamedQuery

Hibernate命名查询NamedQuery  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  例

知识大全 Hibernate查询方法之探析

Hibernate查询方法之探析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  :QBE(Que