国航移动客舱项目SSH服务器端HIBERNATE的部分ORACLE查询

简介:

流程大致如下:

通过航班号和出发日期(可能有出发时间)查询flight表获取主键flight_ID,

flight_ID通过中间表user_flight查询到join_id,

通过join_id可以分别查询到User(用户表)和bag(行李表)中的相关信息


查询航班

action层:

	public void queryFlight(){
		//输入参数是fltNbr,dptDate [dptTime]
		System.out.println("fltNbr="+fltNbr+"; dptDate="+dptDate);		
		try {
			ResultInfo result = flightService.queryFlight(fltNbr, dptDate, dptTime);			
			doOutput((new JSONObject().fromObject(result)).toString());
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}

control层:

	public ResultInfo queryFlight(String fltNbr, String dptDate, String dptTime) throws Exception {
		/**
		 *  主要的处理逻辑:
		 * 1、根据输入的 航班号、出发日期 和 出发时间 查询航班信息,
		 * 2、将查询结果以JSON格式保存到对应的文件
		 * 3、将JSON文件FTP到对应的文件目录//
		 * 4、最后返回操作结果, 
		 *    如果有新的文件成功生成 code=TRUE msg=FTP路径和文件名;
		 *    如果没有新文件生成、生成文件操作失败 或FTP操作失败  code=FLASE msg=具体解释
		 */
		ResultInfo rstInfo = new ResultInfo();
		List<AirFlight> resultList = flightDao.queryFlight(fltNbr, dptDate, dptTime);
		String jsonContent = "";		
		if(resultList != null && resultList.size()>0){		
			JSONArray jsonArray = new JSONArray().fromObject(resultList);
			jsonContent = jsonArray.toString();
		}else{
			jsonContent = "N/A";
		}
		
		/**处理文件 */
		if("N/A".equals(jsonContent)){
			rstInfo.setCode("FALSE");
			rstInfo.setMsg("没有查到对应的航班信息");
		}else{
			String md5Str = MD5Helper.StringToHash(fltNbr+"-"+dptDate);
			String dataFileName = doJSONFileWriteAndFTP(md5Str, "flight_data", jsonContent);
			rstInfo.setCode("TRUE");
			rstInfo.setMsg(dataFileName);
		}	
		return rstInfo;
	}

DAO层

	public List<AirFlight> queryFlight(String fltNbr, String dptDate, String dptTime) {
		String queryHQL = " from AirFlight where fltNbr = ? and dptDt = ?";
		Object[] value;
		if(dptTime != null && dptTime.length()>0){
			queryHQL = queryHQL +" and dptTm = ?";
			value = new Object[]{fltNbr,dptDate,dptTime};
		}else{
			value = new Object[]{fltNbr,dptDate};
		}
		return (List<AirFlight>)this.getHibernateTemplate().find(queryHQL,value);
	}




查询用户:

ACTION层:

	private String joinId;

	public void queryUser(){
		System.out.println("joinId="+joinId);		
		try {
			ResultInfo result = flightService.queryUser(fltId);			
			doOutput((new JSONObject().fromObject(result)).toString());
		} catch (Exception e) {
			e.printStackTrace();
		}	
	}
control层:

public ResultInfo queryUser(String fltId) throws Exception {
		ResultInfo rstInfo = new ResultInfo();
		List<AirUser> resultList = flightDao.queryUser(fltId);
		String jsonContent = "";
		
		if(resultList != null && resultList.size()>0){		
			JSONArray jsonArray = new JSONArray().fromObject(resultList);
			jsonContent = jsonArray.toString();
		}else{
			jsonContent = "N/A";
		}
		
		/**处理文件 */
		if("N/A".equals(jsonContent)){
			rstInfo.setCode("FALSE");
			rstInfo.setMsg("没有查到对应的乘客信息");
		}else{
			String md5Str = MD5Helper.StringToHash("");
			String dataFileName = doJSONFileWriteAndFTP(md5Str, "user_data", jsonContent);
			rstInfo.setCode("TRUE");
			rstInfo.setMsg(dataFileName);
		}	
		return rstInfo;
	}

DAO层:

	public List<AirUser> queryUser(String fltId) {
		String queryHQL = "select t3 from AirUser t3, AirUserFlight t2 where t2.joinId=t3.joinId and t2.fltId = ?";
		Object[] value = new Object[]{fltId};
		return (List<AirUser>)this.getHibernateTemplate().find(queryHQL,value);
	}



查询行李

action层:

	private String fltId;
	public void queryBaggage(){
		System.out.println("fltId="+fltId+"; joinId="+joinId);		
		try {
			ResultInfo result = flightService.queryAirBaggage(joinId, fltId, fltNbr);			
			doOutput((new JSONObject().fromObject(result)).toString());
		} catch (Exception e) {
			e.printStackTrace();
		}	
	}

control层:

	public ResultInfo queryAirBaggage(String joinId, String fltId,String fltNbr) throws Exception {
		ResultInfo rstInfo = new ResultInfo();
		List<AirBaggage> resultList = flightDao.queryAirBaggage(joinId, fltId, fltNbr);
		String jsonContent = "";
		
		if(resultList != null && resultList.size()>0){		
			JSONArray jsonArray = new JSONArray().fromObject(resultList);
			jsonContent = jsonArray.toString();
		}else{
			jsonContent = "N/A";
		}
		
		/**处理文件 */
		if("N/A".equals(jsonContent)){
			rstInfo.setCode("FALSE");
			rstInfo.setMsg("没有查到对应的行李信息");
		}else{
			String md5Str = MD5Helper.StringToHash("");
			String dataFileName = doJSONFileWriteAndFTP(md5Str, "baggage_data", jsonContent);
			rstInfo.setCode("TRUE");
			rstInfo.setMsg(dataFileName);
		}	
		return rstInfo;
	}

DAO层:

	public List<AirBaggage> queryAirBaggage(String joinId, String fltId,String fltNbr) {
		String queryHQL = "from AirBaggage t4 where t4.fltId = ? and t4.joinId= ?";
		Object[] value = new Object[]{fltId,joinId};
		return (List<AirBaggage>)this.getHibernateTemplate().find(queryHQL,value);
	}






目录
相关文章
|
23天前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
27天前
|
Oracle 关系型数据库 数据库
【YashanDB知识库】oracle dblink varchar类型查询报错记录
在使用Oracle DBLink查询VARCHAR类型数据时,可能会遇到多种报错。通过了解常见错误原因,采取合适的解决方法,可以有效避免和处理这些错误。希望本文提供的分析和示例能帮助你在实际工作中更好地处理DBLink查询问题。
55 10
|
2月前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
2月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
3月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
3月前
|
存储 Oracle 关系型数据库
oracle服务器存储过程中调用http
通过配置权限、创建和调用存储过程,您可以在Oracle数据库中使用UTL_HTTP包发起HTTP请求。这使得Oracle存储过程可以与外部HTTP服务进行交互,从而实现更复杂的数据处理和集成。在实际应用中,根据具体需求调整请求类型和错误处理逻辑,以确保系统的稳定性和可靠性。
161 0
|
4月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
915 3
|
4月前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
123 2
|
4月前
|
前端开发 Java Shell
后端项目打包上传服务器部署运行记录
后端项目打包上传服务器部署运行记录
110 0
|
4月前
|
Java Linux Maven
服务器部署之项目打包及命令行输出
服务器部署之项目打包及命令行输出
75 0

推荐镜像

更多