之前一直使用mysql和informix數據庫,查表中前10條數據十分簡單:本文主要介紹了oracle結合mybatis實現取表的10條數據的相關資料,需要的朋友可以參考下,希望能幫助到大家。
最原始版本:
select?top?*?from?student
當然,我們還可以寫的復雜一點,比如外加一些查詢條件?
比如查詢前10條成績大于80分的學生信息?
添加了where查詢條件的版本:
select?top?*?from?table?where?score?>?80
但是??!oracle中沒有top啊?。。?!那么該如何實現呢?
嗯,可以用rownum!
oracle中原始版本
select?*?from?student?where?rownum?<p></p><p>上面這個好像也沒有復雜的地方。。但是問題來了,如果我們還希望加上分數大于80呢?</p><p>對于我這個oracle初學者來說,真的是費力。在這里就直接貼出來了,希望可以讓一些人少費一些力!?</p><p>oracle添加了where查詢條件的版本</p><p class="jb51code"></p><pre class="brush:sql;">select?*?from( ??select?rownum?rn,A.*?from?student?where?score?>?80)? where?rn?<p></p><p>簡單分析一下上面的代碼。實際上是先通過內嵌的sql語句查詢出分數大于80的數據,再選擇內嵌sql查詢結果中的前10條數據?</p><p>最后附上mybatis代碼?</p><p class="jb51code"></p><pre class="brush:java;"><select> ??select?* ??from?( ??select?rownum?rn,?A.*?from?student?A ??where?STATUS?=?'99' ??and?score?]]>?#{scores,jdbcType=INTEGER})? ??where?rn??#{number,jdbcType=INTEGER} ?</select>
上面的scores和number均為變量
ps:mybatis取Oracle序列,值相同問題處理
<select> ??select?'TRD'||to_char(sysdate,'yyyymmdd')||lpad(to_char(SQ_ORD_PURCHASE_ID.nextval),?5,?'0')?code?from?dual </select>
上述mybatis代碼在調用是總是獲取到同一個序列的值,查詢相關資料得知是mybatis的緩存問題:
加上useCache=”false” flushCache=”false” 屬性即可:
<select> select?'TRD'||to_char(sysdate,'yyyymmdd')||lpad(to_char(SQ_ORD_PURCHASE_ID.nextval),?5,?'0')?code?from?dual </select>
相關推薦:
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END