國航移動客艙項目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); }
最後更新:2017-04-02 17:09:28