`
ludaojuan21
  • 浏览: 222117 次
  • 性别: Icon_minigender_1
  • 来自: 回龙观
社区版块
存档分类
最新评论

SSH综合查询的两种方式

阅读更多
方法1:直接用ORACLE方言函数进行比较
//综合查询
	public List getOpeRecsByCon1(HttpServletRequest request){
		log.debug("finding OpeRecords instances by Condition");
		try {
			
			String factoryId = "";
			String spciltyId = "";
			String dutyId = "";
			String classId = "";
			factoryId = request.getParameter("factoryId");
			spciltyId = request.getParameter("spciltyId");
			dutyId = request.getParameter("dutyId");
			classId = request.getParameter("classId");
			
			StringBuffer queryString = new StringBuffer();
			queryString.append("from OpeRecords o where 1=1");
			
			//如果选择了运行单位和专业
			if((factoryId.length()!=0)&&(spciltyId.length()!=0)){
				queryString.append(" and o.modelid in (select a.modelid from Opemodel a where a.runfactory='"+factoryId+"' and a.specialtyid='"+spciltyId+"')");
			}
			
			//如果仅仅选择了运行单位
			if((factoryId.length()!=0)&&(spciltyId.length()==0)){
				queryString.append(" and o.modelid in (select a.modelid from Opemodel a where a.runfactory='"+factoryId+"')");
			}
			
			//如果仅仅选择了专业
			if((factoryId.length()==0)&&(spciltyId.length()!=0)){
				queryString.append(" and o.modelid in (select a.modelid from Opemodel a where a.specialtyid='"+spciltyId+"')");
			}
			
			//如果选择了班次
			if(dutyId.length()!=0){
				queryString.append(" and o.dutyid='"+dutyId+"'");
			}
			
			//如果选择了值别
			if(classId.length()!=0){
				queryString.append(" and o.classid='"+classId+"'");
			}
			
			String startTimeStr = request.getParameter("startTime");
			String endTimeStr = request.getParameter("endTime");
			
			if(startTimeStr!=null&&!startTimeStr.equals("")){
				queryString.append(" and o.gettime >to_date('"+startTimeStr+"','yyyy-MM-dd HH24:mi:ss')");
			}else if(endTimeStr!=null&&!endTimeStr.equals("")){
				queryString.append(" and o.gettime <to_date('"+endTimeStr+"','yyyy-MM-dd HH24:mi:ss')");
			}else if(startTimeStr!=null&&!startTimeStr.equals("")&&endTimeStr!=null&&!endTimeStr.equals("")){
				queryString.append(" and o.gettime >to_date('"+startTimeStr+"','yyyy-MM-dd HH24:mi:ss')");
				queryString.append(" and o.gettime <to_date('"+endTimeStr+"','yyyy-MM-dd HH24:mi:ss')");
			}
			return getHibernateTemplate().find(queryString.toString());
		} catch (RuntimeException re) {
			log.error("find all failed", re);
			throw re;
		}
	}
	


方法2:使用占位符对对象进行比较
	
//综合查询
	public List getOpeRecsByCon2(HttpServletRequest request){
		log.debug("finding OpeRecords instances by Condition");
		try {
			
			String factoryId = "";
			String spciltyId = "";
			String dutyId = "";
			String classId = "";
			factoryId = request.getParameter("factoryId");
			spciltyId = request.getParameter("spciltyId");
			dutyId = request.getParameter("dutyId");
			classId = request.getParameter("classId");
			
			StringBuffer queryString = new StringBuffer();
			queryString.append("from OpeRecords o where 1=1");
			
			//如果选择了运行单位和专业
			if((factoryId.length()!=0)&&(spciltyId.length()!=0)){
				queryString.append(" and o.modelid in (select a.modelid from Opemodel a where a.runfactory='"+factoryId+"' and a.specialtyid='"+spciltyId+"')");
			}
			
			//如果仅仅选择了运行单位
			if((factoryId.length()!=0)&&(spciltyId.length()==0)){
				queryString.append(" and o.modelid in (select a.modelid from Opemodel a where a.runfactory='"+factoryId+"')");
			}
			
			//如果仅仅选择了专业
			if((factoryId.length()==0)&&(spciltyId.length()!=0)){
				queryString.append(" and o.modelid in (select a.modelid from Opemodel a where a.specialtyid='"+spciltyId+"')");
			}
			
			//如果选择了班次
			if(dutyId.length()!=0){
				queryString.append(" and o.dutyid='"+dutyId+"'");
			}
			
			//如果选择了值别
			if(classId.length()!=0){
				queryString.append(" and o.classid='"+classId+"'");
			}
			
			String startTimeStr = request.getParameter("startTime");
			String endTimeStr = request.getParameter("endTime");
			
			if((startTimeStr!=null&&!startTimeStr.equals(""))&&(endTimeStr!=null&&endTimeStr.equals(""))){
				Date startTime = StringToDate.StrToDate4yyyyMMddHHmmss(startTimeStr);
				queryString.append(" and o.gettime >?)");
				return getHibernateTemplate().find(queryString.toString(),new Object[]{startTime});
			}else if(endTimeStr!=null&&!endTimeStr.equals("")&&(startTimeStr!=null&&startTimeStr.equals(""))){
				Date endTime = StringToDate.StrToDate4yyyyMMddHHmmss(endTimeStr);
				queryString.append(" and o.gettime <?");
				return getHibernateTemplate().find(queryString.toString(),new Object[]{endTime});
			}else{
				Date startTime = StringToDate.StrToDate4yyyyMMddHHmmss(startTimeStr);
				Date endTime = StringToDate.StrToDate4yyyyMMddHHmmss(endTimeStr);
				queryString.append(" and o.gettime between ? and ?");
				return getHibernateTemplate().find(queryString.toString(),new Object[]{startTime,endTime});
			}
		} catch (RuntimeException re) {
			log.error("find all failed", re);
			throw re;
		}
	}


注:带注释符的是一种方法(使用占位符对对象进行比较),不带注释符是直接用ORACLE方言函数进行比较
分享到:
评论

相关推荐

    基于SSH+JSP+MySQL的毕业生离校管理系统(源码+论文)

    访问本系统的用户分为管理员和学生两种角色,2个角色共有多个功能的实现。系统管理员的主要功能有:班级管理、学生管理、离校流程管理、欠费信息管理及离校信息添加;学生的主要功能有:查询离校流程,查询本人欠费...

    python实现的漏洞扫描器

    该漏洞扫描器分为端口扫描模块、SSH弱口令扫描...有CMD执行和图形界面执行两种操作方式。 用户输入目标设备的IP地址及扫描的端口号范围,根据需要选择要扫描的内容,系统依次进行扫描并最终将扫描结果汇总展现给用户。

    组建基于Linux的IPv6网络试验平台

    络三种共存策略的基础上,以一个IPv6 网络的场景说明如何用隧道技术实现两 种网络共存。最后文章从网络结构、网络安全和性能等方面对IPv6 实验平台进 行评价,并对如何普及IPv6 给出几点看法和建议。

    Java求职面试宝典各大公司常考知识点

    如何控制两种框架中的单例模式? 9 4.7. struts如何实现国际化 9 4.8. struts2.0的常用标签有哪些 10 4.9. struts中怎么配置form-bean、action、tiles 10 4.10. logic标签有哪几个? 12 4.11. action是单实例还是多...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》特别介绍了Struts 2对AjAX的支持,还重点剖析了SSH框架的整合开发,并给出了两个综合案例来展示整合SSH框架开发Web应用。 和已经出版的同类图书...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》特别介绍了Struts 2对AjAX的支持,还重点剖析了SSH框架的整合开发,并给出了两个综合案例来展示整合SSH框架开发Web应用。 和已经出版的同类图书...

    NGN承载网网络安全.doc

    前两种方案主要针对物理端口备份,第三种方案是:ip接口板的端口备份,主要针对网 络端口的备份。 ip接口板的端口备份 如图ip接口板的端口备份所示,下方的ip接口板1和ip接口板2为主备用的接口板,两块 单板上有...

    数据库审计系统需求说明.docx

    内置高危SQL查询和注入、远程命令执行、跨站脚本攻击、 FTP和telnet高危指 令等审计规则不少于 300种。 规则可支持导入、导出、优先级调整、分组、批量加载等。 9 白名单 支持用户名、操作类型、IP地址、客户端工具...

    千方百计笔试题大全

    124、两种跳转方式分别是什么?有什么区别? 31 125、如何执行一个线程安全的JSP? 31 126、JSP如何处理HTML FORM中的数据? 31 127、在JSP如何包含一个静态文件? 32 128、在JSP中如何使用注释? 32 129、在JSP中如何...

    java面试宝典

    124、两种跳转方式分别是什么?有什么区别? 31 125、如何执行一个线程安全的JSP? 31 126、JSP如何处理HTML FORM中的数据? 31 127、在JSP如何包含一个静态文件? 32 128、在JSP中如何使用注释? 32 129、在JSP中如何执行...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久...

    JAVA上百实例源码以及开源项目

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    JAVA上百实例源码以及开源项目源代码

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    java源码包---java 源码 大量 实例

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    java源码包2

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    java源码包3

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    java源码包4

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...

Global site tag (gtag.js) - Google Analytics