`
wckjlu
  • 浏览: 15700 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

spring hibernate3.0 如何解决多条件查询

阅读更多
  在以前的一些解决方案中,关于多条件查询我都是采用拼SQL语句,但是,hibernate3.0在输入中文时,出现乱码,所以,只有换一种方式来解决;我看大家都说用站位符,但没有很详细的说明,采用站位符,该如何实现多条件差查询;下面是我看文档写的一个测试方法:
      根据userid查询:
     public List searchSysusers(Sysuser sysuser){
    	SessionFactory sessionFactory=getHibernateTemplate().getSessionFactory();
    	Session sess=sessionFactory.openSession();
    	List list=sess.createCriteria(Sysuser.class)
          .add(Restrictions.eq("userid", "test1")).list();
    	sess.close();
    	return list;
    }
    

   根据userid 和department查询:
 
   public List searchSysusers(Sysuser sysuser){
    	SessionFactory sessionFactory=getHibernateTemplate().getSessionFactory();
    	Session sess=sessionFactory.openSession();
    	List list=sess.createCriteria(Sysuser.class)
          .add(Restrictions.eq("userid", "test1"))
          .add(Restrictions.like("department","%工程部%")).list();
    	sess.close();
    	return list;
    }


  都能把结果正确查询出来,但是当我要输入一个或者多个查询条件时,却不知道该如何实现了;因为我输入的查询条件个数是不确定的; 当然,如果我要查询的条件个数不是很多的话,判断以下就成,但是 如果条件很多的话,用判断显然是不行的;
   请教大家这个问题该如何解决?
分享到:
评论
8 楼 cskysnew 2007-04-03  
如果查询条件涉及多个表,并且各个表之间没有设置关联关系,那有没有办法使用Criteria进行查询呢?
7 楼 Allen 2007-01-22  
tony.lee 写道
如果查询条件涉及多个表,那么如何用Criteria或Query组合呢?是先把那些条件所涉及的属性创建一个新的对象,然后再操作。还是有其他好的方法?


createAlias()  Or  createCriteria()
6 楼 tony.lee 2007-01-22  
如果查询条件涉及多个表,那么如何用Criteria或Query组合呢?是先把那些条件所涉及的属性创建一个新的对象,然后再操作。还是有其他好的方法?
5 楼 dwangel 2007-01-22  
一般可以用map或者数组(不好的选择),作为参数,使用固定函数,
遍历map和数组,
动态生成查询。
4 楼 Allen 2007-01-16  
方法大同小异,不过众多的判断语句是少不了的咯:
    		return (List) getHibernateTemplate().execute(new HibernateCallback() {
    			public Object doInHibernate(Session session)
    					throws HibernateException {
    				Criteria crit = session.createCriteria(Xxx.class);
    				getAllConditions(crit, xxxx);	
    				crit.addOrder(Order.asc("xxxx.id"));
    				return crit.list();
    			}
    		});


	private void getAllConditions(Criteria crit, final Xxxx xxxx) {
		
		if (xxxx != null) {
			if (xxxx.getXx() != null && !"".equals(xxxx.getXx())
					&& xxxx.getXx().intValue() != 0) {
				crit.add(Expression.eq("xx", xxxx.getXx()));
			}
			if (xxxx.getXxx() != null 
					&& !"".equals(xxxx.getXxx())) {
				crit.add(Expression.eq("xxx", xxxx.getXxx()));
			}
		}
	}
3 楼 抛出异常的爱 2007-01-16  
 
   public List searchSysusers(Sysuser sysuser){
    	SessionFactory sessionFactory=getHibernateTemplate().getSessionFactory();
    	Session sess=sessionFactory.openSession();
    	Criteria c=sess.createCriteria(Sysuser.class);
         if(XXXXXXX){
              c.add(Restrictions.eq("userid", "test1"));
          }
         if(YYYYYYYY){
             c.add(Restrictions.like("department","%工程部%"));
          }
         List list = c.list();
    	sess.close();
    	return list;
    }

弱智
2 楼 giscat 2007-01-16  

以下供参考,用占位符,输入参数用pojo或map
hibernate为最新的3.2

	 
	 public static List query(String hsql,Object param,
			 int off,int max)throws Exception{
		 
		 
		 Session s = null;
		 Transaction tx = null;
		 Query q = null;
		 List list = null;
		 String c = null;
		 

		 
		 
		 try {
			 s = getSession();
		     //tx = s.beginTransaction();
		     q = s.createQuery(hsql);
		     
		     if(param!=null){
		    	 //q.setProperties(param);
		    	 c = param.getClass().getName();
		    	 //System.out.println(c);
		    	 if(c.equals("java.util.HashMap")){
		    		 q.setProperties((Map)param);
		    	 }else{
		    		 q.setProperties(param);
		    		 
		    	 }
		    	 
		    	 
		     }
		     
		     
		     if(off>0){
		    	 q.setFirstResult(off);
		     }
		     if(max>0){
		    	 q.setMaxResults(max);
		     }
		     list = q.list();
		   
		     //tx.commit();
		     return list;
		 }
		 catch (Exception e) {
		     //if (tx!=null) tx.rollback();
		     throw e;
		 }
		 finally {
		     s.close();
		 }

		 
		 
		 
	 }


	        String sql = null;
                User user = new User();
                Map map = new HashMap();
                List list = null;

		
                sql = "from User where name = :name"; 
		user.setName("tiger");
		list = Hb3Util.query(sql,user,5,8);

                sql = "from User where name like :name";                
		map.put("name","%tiger%");               
		list = Hb3Util.query(sql,map,5,8);



1 楼 fangang 2007-01-16  
其实这个不难实现,函数输入3个数组:String[] props, String[] opers, Object[] values。第一个参数是条件的属性名,第二个参数是操作符,第三个参数是值。先Criteria cri=sess.createCriteria(Sysuser.class);然后通过一个循环语句来执行cri.add(...);最后执行List list= cri.list();

相关推荐

    struts2.0 spring2.0 hibernate3.0整合开发快速入门-3

    ### Struts2.0、Spring2.0与Hibernate3.0整合开发快速入门知识点解析 #### 一、Struts2.0与Hibernate3.0整合基础 **知识点1:Struts2.0简介** - **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于...

    struts1.2+spring2.3+hibernate3.0

    Struts1.2、Spring2.3 和 Hibernate3.0 是经典的Java企业级开发框架组合,被称为SSH(Struts-Spring-Hibernate)集成框架。这个组合在2000年代末到2010年初非常流行,它们各自解决了不同的问题,并通过相互配合,...

    struts2.0+spring2.5+hibernate3.0整合框架,下载导入到eclipse下即可

    struts2.0+spring2.5+hibernate3.0整合框架,下载导入到eclipse下即可。。启动tomcat前先修改jdbc.properties文件。由于lib文件较大,所以请自行导入相关lib包。

    struts1.2+spring2.0+hibernate3.0所需要的包

    struts1.2+spring2.0+hibernate3.0所需要的包 struts1.2+spring2.0+hibernate3.0所需要的包 struts1.2+spring2.0+hibernate3.0所需要的包 struts1.2+spring2.0+hibernate3.0所需要的包

    Flex pureMVC blazeDS j2ee Spring3.0+Hibernate3.0

    在IT行业中,构建高效、可扩展的企业级应用是一项复杂任务,而"Flex pureMVC blazeDS j2ee Spring3.0+Hibernate3.0"这个主题涵盖了前端开发、后端架构以及数据持久化等多个关键领域。下面将详细介绍这些技术及其在...

    spring2.5+struts2+hibernate3.0JAR包集合

    标题 "spring2.5+struts2+hibernate3.0JAR包集合" 提及的是一个集成开发环境中的核心组件,这三个框架是Java Web开发中的重要工具,用于构建高效、可扩展的企业级应用程序。 Spring 2.5是Spring框架的一个版本,它...

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR)

    公文管理、申请审批、公告管理、会议管理、权限管理、个人办公、客户管理、人事等等。项目技术:Struts1.2 + Hibernate3.0 + Spring2 +DWR。java毕业设计 jsp毕业设计 ssh毕业设计

    spring2.5 struts1.2 hibernate3.0完美全部jar包

    标题中的“spring2.5 struts1.2 hibernate3.0完美全部jar包”指的是一个集成开发环境所需的关键库文件集合,包含了Spring框架2.5版本、Struts框架1.2版本和Hibernate ORM框架3.0版本的所有jar包。这些jar包是Java...

    Struts2.1.8+Hibernate3.3+Spring3.0环境搭建

    Struts2.1.8+Hibernate3.3+Spring3.0是经典的Java Web开发框架组合,也被称为SSH(Struts2、Spring、Hibernate)。这个环境的搭建涉及到多个步骤,涵盖了MVC(Model-View-Controller)框架、持久化框架和依赖注入...

    spring2.5+strust1+hibernate3.0JAR包集合

    总的来说,这个"spring2.5+struts1+hibernate3.0 JAR包集合"代表了一个成熟、广泛使用的Java Web开发解决方案,它整合了优秀的组件,为开发人员提供了强大的工具,以构建复杂、高性能的应用程序。然而,随着技术的...

    spring2.0 hibernate 3.0 struts1.1 xfire1.2 整合

    这种集成方式在过去的项目中非常常见,但随着技术的发展,现在更多的开发者可能转向使用Spring Boot、Hibernate ORM(取代XFire的现代Web服务框架如Spring Web Services)和更新版本的Struts或替代品如Play ...

    struts2.0+spring2.0+hibernate3.0所需要的包

    struts2.0+spring2.0+hibernate3.0所需要的包 struts2.0+spring2.0+hibernate3.0所需要的包 struts2.0+spring2.0+hibernate3.0所需要的包 struts2.0+spring2.0+hibernate3.0所需要的包

    hibernate3.0+spring3.3整合包

    在Hibernate3.0版本中,引入了改进的HQL(Hibernate查询语言),支持更多SQL特性,如子查询和连接查询。此外,它还增强了对JPA(Java Persistence API)的支持,提供了更丰富的实体管理和事务处理功能。 2. **...

    springMVC+hibernage+spring(基于spring2.5和hibernate3.0)jar包

    这里我们主要探讨基于Spring 2.5和Hibernate 3.0的集成应用。 Spring MVC 是Spring框架的一个模块,专注于Web应用程序的开发。它提供了模型-视图-控制器(MVC)架构模式,帮助开发者将业务逻辑、用户界面和数据访问...

    Struts1.2+Hibernate3.0+Spring2+DWR OA 办公自动化管理系统

    Hibernate3.0提供了HQL(Hibernate Query Language)和Criteria查询,增强了对数据库的操作能力,简化了数据访问层的开发。 **Spring2** 是一个全面的企业应用框架,它提供了依赖注入(Dependency Injection,DI)...

    spring3.0+hibernate3.0+struts2

    标题 "spring3.0+hibernate3.0+struts2" 提示我们讨论的是一个集成使用Spring 3.0、Hibernate 3.0和Struts 2的经典Java Web开发框架,通常被称为SSH(Spring、Struts和Hibernate)。这个组合在过去的几年里非常流行...

    Stuts2+hibernate3.0+Spring3.0整合

    Struts2、Hibernate3.0和Spring3.0是Java Web开发中著名的三大框架,它们分别负责MVC模式中的Action层、持久化层和业务层管理。SSH整合是指将这三个框架集成到一起,以实现更高效、更灵活的Web应用开发。在本项目中...

    struts2 spring2.5 hibernate3.0 annotation 整合

    Struts2、Spring2.5和Hibernate3.0是Java Web开发中三个非常重要的框架,它们各自负责不同的职责,但可以协同工作以构建高效、可维护的Web应用程序。本项目整合了这三个框架,并利用注解(Annotation)进行配置,...

    cxf+hibernate3.0+spring3.0 完整整合代码实现

    【标题】:“cxf+hibernate3.0+spring3.0 完整整合代码实现” 【描述】:“此项目实现了将CXF、Hibernate3.0和Spring3.0这三个开源框架集成到一起,提供了在WebLogic和Tomcat两种应用服务器上的无缝兼容。” ...

    Hibernate3.2和Spring3.0学习jar包

    6. Spring3.0加强了与其它框架的整合,如Hibernate、MyBatis等,使得多框架的集成更为顺畅。 这个学习jar包对于初学者或有经验的开发者都是宝贵的资源,它提供了学习和使用这两个框架的起点。通过实际项目练习,...

Global site tag (gtag.js) - Google Analytics