Oracle結(jié)合Mybatis實(shí)現(xiàn)取表的10條數(shù)據(jù)

之前一直使用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?&gt;?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?]]&gt;?#{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)推薦:

Oracle如何更改表空間的數(shù)據(jù)文件位置

Oracle如何更改表空間的數(shù)據(jù)文件位置

Oracle如何更改表空間的數(shù)據(jù)文件位置

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享