国航移动客舱项目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);
	}
时间: 2024-10-28 21:42:58

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

sql-Android项目,服务器端MyEclipse中SQL语句查询的问题

问题描述 Android项目,服务器端MyEclipse中SQL语句查询的问题 String sql= "select * from restaurant where xiaoqu_name ='"+xiaoqu_name+"'"; 当点击手机端的相应按钮后,数据库中数据是中文时,无法查询到当前条件下的数据 但是当数据库中的数据为全字母时,就可以正常的打印出来,手机端也可以正常的显示 但是当把SQL语句改为 String sql= "select * fr

应用-SSH中Hibernate具体在项目中怎么用的

问题描述 SSH中Hibernate具体在项目中怎么用的 Hibernate 最新在学习Hibernate,但感觉学着有点力不从心,有人知道在项目中具体是怎么 应用的吗,或者说这个知识可以解决什么样的具体问题,求教.谢谢. 解决方案 第一:数据库连接不需要我们自己来管理,如打开和关闭. 第二:Hibernate对原来的SQL语句进行了封装,以前写很多SQL语句,现在你在保存的时候直接可以用 SAVE(对象)来实现了.(节省代码) 第三:原来是对表操作,现在是对对象操作,想法上是不是更好呢?都是对

java-windows2008发布JAVA项目-SSH 可以吗

问题描述 windows2008发布JAVA项目-SSH 可以吗 JAVA项目使用SSH框架开发.数据用的是SqlServer的.本来想用MySql的..是数据量大..有引起表有上百万或上千万的记录. 解决方案 你不知道Java是所谓的跨平台的吗??

ssh整合-关于ssh中hibernate生成方法从Action中调用报错main调用不报错

问题描述 关于ssh中hibernate生成方法从Action中调用报错main调用不报错 看图学生求解决没遇到过!我建测试类用main方法进来一点问题都没有正常输出i=1 解决方案 报的什么错,贴出来,,, 解决方案二: 你确定text的userinfo和action的userinfo的内容一样吗? 你在findUserinfonamepwd方法中将name和pwd打印出来看看. 我怀疑你action的参数userinfo是null或者userinfo实例化了,但是name或者pwd是null

ssh框架中如何为oracle中对应的表创建hibernate序列,以达到新加主键自增的功能

问题描述 ssh框架中如何为oracle中对应的表创建hibernate序列,以达到新加主键自增的功能 解决方案 .hbm 文件 <id name="id" type="java.lang.String"> <column name="ID" length="32" /> <generator class="uuid.hex" /> </id>策略不一样<

现在开始流行mybatis了?好像很多项目都不用hibernate 了?

问题描述 现在开始流行mybatis了?好像很多项目都不用hibernate 了? 我看很多新项目都是用mybatis,而不是hibernate了.大家用的是哪种?都不知怎么架构了项目 解决方案 没有把,看公司的项目以及开发团队更熟悉哪个了.http://blog.csdn.net/firejuly/article/details/8190229 解决方案二: mybatis更贴近sql,hibernate更适合跨数据库的项目 解决方案三: 这两个东西的特点不一样,有些项目连ORM都不用 解决方

现有一个WEB项目(myeclipse+struts+hibernate+sqlserver2000)已打成war包,求一个proguard的配置方法

问题描述 现有一个WEB项目(myeclipse+struts+hibernate+sqlserver2000)已打成war包,求一个proguard的配置方法,proguard图形界面的混淆的具体参数说明.我在混淆的时候,出现warningWarning:class[WEB-INF/classes/com/watchdata/watchsafe_net/action/actionRecord/ActionRecordOperationAction.class]unexpectedlyconta

hibernate的多条件查询——Criteria Query的应用

  查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中.此外,Hibernate还支持Criteria查询(Criteria Query),这种查询方式把查询条件封装为一个Criteria对象.在实际应用中,使用Session的createCriteria()方法构建一个org.hibernate.Criteria实例,然后把具体的查询条件通过Criteria的add()方法加入到Criteria实例中.这样,程序员可以不使用SQL甚至HQL的情况下进

实现在Hibernate中的分页查询原理解读

Hibernate 可以实现分页查询,例如: 从第2万条开始取出100条记录 Query q = session.createQuery("from Cat as c"); q.setFirstResult(20000); q.setMaxResults(100); List l = q.list(); 那么Hibernate底层如何实现分页的呢?实际上Hibernate的查询定义在net.sf.hibernate.loader.Loader这个类里面,仔细阅读该类代码,就可以把问题彻