之前一直使用mysql和informix數(shù)據(jù)庫,查表中前10條數(shù)據(jù)十分簡單:本文主要介紹了oracle結(jié)合mybatis實(shí)現(xiàn)取表的10條數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下,希望能幫助到大家。
最原始版本:
select?top?*?from?student
當(dāng)然,我們還可以寫的復(fù)雜一點(diǎn),比如外加一些查詢條件?
比如查詢前10條成績大于80分的學(xué)生信息?
添加了where查詢條件的版本:
select?top?*?from?table?where?score?>?80
但是!!oracle中沒有top啊!!!!那么該如何實(shí)現(xiàn)呢?
嗯,可以用rownum!
oracle中原始版本
select?*?from?student?where?rownum?<p></p><p>上面這個(gè)好像也沒有復(fù)雜的地方。。但是問題來了,如果我們還希望加上分?jǐn)?shù)大于80呢?</p><p>對(duì)于我這個(gè)oracle初學(xué)者來說,真的是費(fèi)力。在這里就直接貼出來了,希望可以讓一些人少費(fèi)一些力!?</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>簡單分析一下上面的代碼。實(shí)際上是先通過內(nèi)嵌的sql語句查詢出分?jǐn)?shù)大于80的數(shù)據(jù),再選擇內(nèi)嵌sql查詢結(jié)果中的前10條數(shù)據(jù)?</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代碼在調(diào)用是總是獲取到同一個(gè)序列的值,查詢相關(guān)資料得知是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>
相關(guān)推薦:
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END