问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

hibernate的多条件动态查询

发布网友 发布时间:2023-07-31 17:06

我来回答

1个回答

热心网友 时间:2024-02-17 05:42

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

  例如有这么一个界面

  

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

  下面我写一个例子

  我有一张表叫user表

  package fish test;

  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 test 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 test 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;

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

  我们看看数据库的信息

  

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

  张   

lishixin/Article/program/Java/ky/201311/28511
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
哪些网站可以找到更好的ppt配图? 有哪些“免费”的ppt模板,图片素材的网站? 推荐点梁汉文的好歌 梁汉文好听的经典歌 哲理词句大全精选278句 微信名字最好听527个 面试没过可以再争取话术 面试后被拒绝了如何重新争取 面试复试没通过还能争取吗 3d定制女仆2电脑配置这个配置能玩3D定制女仆2么不行的话需要换什么 郑州鱼火锅哪里好吃 单位让演讲稿6篇 怎么用Excel多条件查找? 6周岁的小女孩能吃没啼鸣的小公鸡吗 五滋六味是指什么 移动的来电转接提示关机的号码是多少 ...关机请稍后再拨,后面的英语移动和联通分别是什么 安徽移动呼叫转移短信呼的那个号码是什么?就是我开机状态别人打电话是关... 欠贷调解后为什么会送立案通知书 孩子流鼻血,是怎么回事,男童4岁,前面1-2月流过一次,昨天下午一次,今天... 我家孩子老流鼻血,两礼拜流一次, 小孩流鼻血一次,是不是经常流鼻血 孩子鼻孔流鼻血隔一二个月一次 做车床和线切割对身体有伤害吗? 请问机械厂做车床工,天天车黄铜,黄铜对人体有危害吗?如果有是哪些... 车床对人体危害有多大? 经常干车床对身体有什么危害吗 九号怎么设置充电上限 催乳一般需要几次 催乳一般几次见效 Hibernate如何提升数据库查询的性能 hibernate没有实体类的情况下,怎么查询数据库中的数据 华为p7电信版相素好吗 魔兽争霸3尤迪安变身技能问题 魔兽争霸尤迪安传送技能怎么编辑 魔兽争霸3地图编辑器变身尤迪安以后怎么打击多个目标? 中国移动注销手机号,里面的话费怎么处理? 溪流砂适合养热水鱼吗 想找几部关于监狱方面的好看电影? 詹姆斯 保罗 霍华德谁最大,谁最小 大连海事大学今年多少分录取 大连海事学院2022录取分数线 大连海事大学继续教育学院分数线 抵押车被偷了可以报警吗 买的一台抵押车,被偷,车上有物品,怎么报案 抵押车丢了但是车上有私人物品,我可以报警盗窃吗? 阿拉善左旗新井煤业有限公司是国企 内蒙古阿拉善盟左旗新井煤业有限公司是国企吗 阿拉善盟阿拉善左旗新井煤业有限公司是国企吗 阿拉善新井煤业有限公司是私企吗