基于Struts2+Hibernate的DetachedCriteria多条件查询

上一篇我们讲诉了基于SSH框架利用Criteria的多条件查询,这一篇我们就接着来看基于SSH框架利用DetachedCriteria的多条件查询。

一、Jsp表单查询页

  1    <form action="${pageContext.request.contextPath}/CourseTypeAction_listCourse.action"     
  2      method="post">
  3    	<table width="88%" border="0" class="emp_table" style="width:80%;">
  4    	  <tr>
  5   	    <td width="10%">课程类别:</td>
  6    	    <td><input type="text" name="courseName" size="30" value="" /></td>
  7    	  </tr>
  8   	  <tr>
  9   	    <td >课程简介:</td>
 10   	    <td > <input type="text" name="remark" size="30" value="" /></td>
 11   	  </tr>
 12  	  <tr>
 13   	    <td >总学时:</td>
 14   	    <td ><input type="text" name="totalStart" size="12" value="" />  至   
 15                 <input type="text" name="totalEnd" size="12" value="" /></td>
 16  	  </tr>
 17   	  <tr>
 18   	    <td>课程费用:</td>
 19   	    <td ><input type="text" name="lessonCostStart" size="12" value="" /> 至  
 20               <input type="text" name="lessonCostEnd" size="12" value="" /></td>
 21   	  </tr>
 22   	</table><br> 
 23      <input type="submit"/>
 24   </form>
 25 

Jsp Code

二、javaBean(Course.java)

  1 package com.fhcq.bean;
  2
  3 public class Course {
  4
  5 	String courseType;
  6 	Double courseCost;
  7 	Integer studyTime;
  8 	String remark;
  9
 10 	public String getCourseType() {
 11 		return courseType;
 12 	}
 13 	public void setCourseType(String courseType) {
 14 		this.courseType = courseType;
 15 	}
 16 	public Double getCourseCost() {
 17 		return courseCost;
 18 	}
 19 	public void setCourseCost(Double courseCost) {
 20 		this.courseCost = courseCost;
 21 	}
 22 	public Integer getStudyTime() {
 23 		return studyTime;
 24 	}
 25 	public void setStudyTime(Integer studyTime) {
 26 		this.studyTime = studyTime;
 27 	}
 28 	public String getRemark() {
 29 		return remark;
 30 	}
 31 	public void setRemark(String remark) {
 32 		this.remark = remark;
 33 	}
 34
 35 }
 36 

CourseBean Code

三、Course.hbm.xml

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <!DOCTYPE hibernate-mapping PUBLIC
  3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5 <hibernate-mapping package="com.cskaoyan.course.bean">
  6
  7     <!-- name是类名  如果有包就不用写全类名,否则要写。  table 表示对应的表名 。建议都要写  -->
  8     <class name="Course" table="course">
  9
 10            <!--使用Id配置主键 必须配置  -->
 11            <id name="courseId" column="courseId">
 12                   <!--目前照常,主键生成策略  -->
 13                   <generator class="native"></generator>
 14            </id>
 15
 16          <!--我们的CourseBean的每个普通字段 跟数据库表course每一列的对应  -->
 17          <property name="courseType"></property>
 18          <property name="courseCost"></property>
 19          <property name="studyTime"></property>
 20          <property name="remark"></property>
 21
 22     </class>
 23 </hibernate-mapping>

XML Code

四、

CourseDaoImpl.java

  1 @Override
  2 public List<Course> showPageCourseByCondition(String courseName, String remark,         
  3       String totalStart, String totalEnd,String lessonCostStart, String lessonCostEnd) {
  4    	 // TODO Auto-generated method stub
  5    	if(StringUtils.isBlank(courseName) && StringUtils.isBlank(remark)&&StringUtils.isBlank
  6            (totalStart) && StringUtils.isBlank(totalEnd)&&StringUtils.isBlank
  7            (lessonCostStart) && StringUtils.isBlank(lessonCostEnd)){
  8    	      return showCoursesByPage();
  9    	}else{
 10   	      DetachedCriteria forClass = DetachedCriteria.forClass(Course.class);
 11   	      if(StringUtils.isNotBlank(courseName)){
 12   	            forClass.add(Restrictions.like("courseName", courseName.replace(" ", ""), 
 13                  MatchMode.ANYWHERE));
 14   	      }
 15   	      if(StringUtils.isNotBlank(remark)){
 16     		  forClass.add(Restrictions.like("remark", remark.replace(" ", ""),
 17                 MatchMode.ANYWHERE));
 18   	      }
 19   	      if(StringUtils.isNotBlank(totalStart)){
 20   		  Integer totalStart1 =Integer.parseInt(totalStart);
 21   		  forClass.add(Restrictions.ge("total", totalStart1));
 22   	      }
 23   	      if(StringUtils.isNotBlank(totalEnd)){
 24   		  Integer totalEnd1 =Integer.parseInt(totalEnd);
 25   		  forClass.add(Restrictions.le("total", totalEnd1));
 26            }
 27   	      if(StringUtils.isNotBlank(lessonCostStart)){
 28   		  double lessonCostStart1 = Double.valueOf(lessonCostStart).doubleValue();
 29  		  forClass.add(Restrictions.ge("courseCost", lessonCostStart1));
 30   	      }
 31  	      if(StringUtils.isNotBlank(lessonCostEnd)){
 32   		  double lessonCostEnd1 = Double.valueOf(lessonCostEnd).doubleValue();
 33   		  forClass.add(Restrictions.le("courseCost", lessonCostEnd1));
 34   	      }
 35
 36   	List<Course> findByCriteria = (List<Course>) getHibernateTemplate().findByCriteria 
 37            (forClass);
 38   	return findByCriteria;
 39   	}
 40 }

DaoImpl Code

时间: 2024-11-04 20:22:05

基于Struts2+Hibernate的DetachedCriteria多条件查询的相关文章

基于Struts2+Hibernate的Criteria多条件查询

Hibernate 定义了CriteriaSpecification接口规范用来完成面向对象的条件查询,Criteria 和 DetachedCriteria 就是CriteriaSpecification的子接口. 在进行本篇的内容之前,我们先来大致说一说Criteria 和 DetachedCriteria 的主要区别: Criteria 和 DetachedCriteria 的创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的:而 D

Spring(五):Spring&amp;Struts2&amp;Hibernate整合后,实现查询Employee信息

背景: 基于之前两篇文章<Spring(三):Spring整合Hibernate>.<Spring(四):Spring整合Hibernate,之后整合Struts2>,了解了如何整合SSH的过程,但还不知道整合后在项目中该怎么开发使用,本文主要讲解的是基于SSH实现Employee信息查询功能的使用. 新建Employee,Department实体类,并添加对应类的hibernate实体配置文件 新建包com.dx.ssh.entities,在该包下创建Employee.Depar

基于struts2+hibernate+spring(ssh2)的登录验证码的实现

1.只有数字 2.数字加字母 3.问题 Java代码   package com.base.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.uti

基于Struts2+Hibernate开发小区物业管理系统 源码 B

开发环境: Windows操作系统开发工具:MyEclipse/Eclipse + JDK+ Tomcat + MySQL 数据库 项目截图: 获取源码请联系博主-Q:782827013 原文地址:https://www.cnblogs.com/xlrjgzs/p/11145770.html

分页离线条件查询 页面响应500 后端未报异常 list集合有数据

如果 使用同一个Hibernate的DetachedCriteria离线条件查询对象同时查询"过滤后条数" 和 "过滤后的数据集合",那么查询记录数时需要设置聚合函数条件并且 使用聚合函数  代码要在 查询数据集合 之前,如果相反则会查询不到 聚合函数的数据 如下: 原文地址:https://www.cnblogs.com/Zhusi/p/10421457.html

基于Struts2、Spring、Hibernate实现的包含多条件查询分页的基础Dao层帮助jar包实现

操作数据库常用操作就是增删查改,每做一次就写一次这些操作太麻烦,也没必要,特别是写多条件查询并分页时,太痛苦了,所以抽空写了个dao帮助jar,导入即搞定!妈妈再有不用担心我的项目了! 转载请注明出处!!! 使用说明: 1.类的使用请参照文档说明,不懂可以结合例子demo! 2.分页jsp书写,只需将分页条件包在<form action="地址" id="pageForm">中即可,然后把jar中的pageJsp中的pageView.jsp拷出来,在数据

基于Struts2、Spring、Hibernate实现的包括多条件查询分页的基础Dao层帮助jar包实现

操作数据库经常使用操作就是增删查改.每做一次就写一次这些操作太麻烦,也不是必需,特别是写多条件查询并分页时.太痛苦了,所以抽出时间写了个dao帮助jar.导入即搞定!妈妈再有不用操心我的项目了! 转载请注明出处! ! ! 使用说明: 1.类的使用请參照文档说明,不懂能够结合样例demo. 2.分页jsp书写,仅仅需将分页条件包在<form action="地址" id="pageForm">中就可以.然后把jar中的pageJsp中的pageView.j

hibernate的Criteria条件查询

项目中用到了criteria的查询方式,觉得挺好用的,下班后找了一下资料,一边测试,一边在博客上面记录下来 1.初解 快速浏览了资料,大致了解了以下的内容: 1. Hibernate 定义了CriteriaSpecification接口规范用来完成面向对象的条件查询,Criteria 和 DetachedCriteria 就是CriteriaSpecification的子接口. 2. Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样,Criteria 是在线

Hibernate的条件查询的几种方式+查询所有的记录

条件查询 1. 第一种,用?占位符,如: //登录(用?占位符) public List<UserPO> LoginUser(UserPO up)throws Exception{ Session session = HibernateSessionFactory.getSession(); String hql = "from UserPO where name = ? and pwd= ?"; Query query = session.createQuery(hql)