描述:
在平常的開發過程中,會發現日期的類型有許多種,有java.lang.Date,java.sql.Date,oracle.jbo.domain.Date,還有時間戳記oracle.jbo.domain.Timestamp等等。經常也會遇到這些類型之間的相互轉化。本次講述日期文字轉化為oracle.jbo.domain.Date與oracle.jbo.domain.Timestamp的類型。
需求:
在xe資料庫中的employees表中找出僱傭日期(hire_date)在某個時間(自己定義)之前,並且職位編號(job_id)只屬於('AD_PRES', 'AD_VP', 'IT_PROG')三種類型的員工。
實現:
單純用sql語句去查詢很簡單,例如。
select * from employees<br />where job_id in ('AD_PRES', 'AD_VP', 'IT_PROG')<br /> and hire_date <= to_date('1992/1/1', 'yyyy/dd/mm')
這裡為了更好地講述問題,採用建立子查詢的方式去查詢合格員工。
1. 基於表Employees,建立EmployeesEO,EmployeesVO。在EmployeesVO中建立一個子查詢,用來查詢合格員工。首先在vo上面建立一個綁定變數。
2. 然後再vo中建立子查詢EmployeesVC,並且HireDate屬性綁定到上面建立的綁定變數bvHireDate上。
3. 建立jspx頁面,SearchEmployees.jspx,布局大概如下
4. 產生對應backingBean,SearchEmployees類,把search的action綁定到SearchAction方法上,處理查詢邏輯。首先把介面上的inputDate組件綁定到backingBean中,一邊在後台取出介面上輸入的值,然後把得到的字串日期,轉化為oracle.jbo.domain.Date或者oracle.jbo.domain.Timestamp類型。
首先在backingBean的SearchEmployees類中編寫
public class SearchEmployees extends CustomManagerBean {<br /> private RichInputDate inputDate;<br /> public SearchEmployees() {<br /> }<br /> public void setInputDate(RichInputDate inputDate) {<br /> this.inputDate = inputDate;<br /> }<br /> public RichInputDate getInputDate() {<br /> return inputDate;<br /> }</p><p> public String searchAction() {<br /> String inDate = this.getInputDate().getValue().toString();<br /> System.out.println(inDate);<br /> DateFormat formatter;<br /> java.util.Date date = null;<br /> Timestamp time = null;</p><p> try {<br /> formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");<br /> date = formatter.parse(inDate);<br /> time = new Timestamp(date.getTime());<br /> System.out.println(time);</p><p> } catch (ParseException e) {<br /> e.printStackTrace();<br /> }</p><p> OperationBinding binding = this.findOperation("search");<br /> binding.getParamsMap().put("time", time);<br /> binding.execute();<br /> return null;<br /> }<br />}<br />
在AM的實作類別中實現search方法
public void search(Timestamp time) {<br /> EmployeesVOImpl vo = (EmployeesVOImpl)this.getEmployeesVO1();<br /> vo.setbvHireDate(time);<br /> ViewCriteria vc = vo.getViewCriteria("EmployeesVC");<br /> vo.applyViewCriteria(vc);<br /> vo.executeQuery();<br /> }
5. 運行結果