Oracle結合Mybatis實現(xiàn)取表TOP 10條數(shù)據(jù)
之前一直使用mysql和informix數(shù)據(jù)庫,查表中前10條數(shù)據(jù)十分簡單:
最原始版本:
select top * from student
當然,我們還可以寫的復雜一點,比如外加一些查詢條件?
比如查詢前10條成績大于80分的學生信息
添加了where查詢條件的版本:
select top * from table where score > 80
但是??!oracle中沒有top?。。。?!那么該如何實現(xiàn)呢?
嗯,可以用rownum!
oracle中原始版本
select * from student where rownum < 10
上面這個好像也沒有復雜的地方。。但是問題來了,如果我們還希望加上分數(shù)大于80呢?
對于我這個oracle初學者來說,真的是費力。在這里就直接貼出來了,希望可以讓一些人少費一些力!
oracle添加了where查詢條件的版本
select * from( select rownum rn,A.* from student where score > 80) where rn < 10
簡單分析一下上面的代碼。實際上是先通過內嵌的sql語句查詢出分數(shù)大于80的數(shù)據(jù),再選擇內嵌sql查詢結果中的前10條數(shù)據(jù)
最后附上mybatis代碼?
<select id="selectStudent" parameterType="hashmap" resultMap="BaseResultMap"> select * from ( select rownum rn, A.* from student A where STATUS = '99' and score <![CDATA[>]]> #{scores,jdbcType=INTEGER}) where rn <![CDATA[<=]]> #{number,jdbcType=INTEGER} </select>
上面的scores和number均為變量
ps:mybatis取Oracle序列,值相同問題處理
<select id="getCode" resultType="java.lang.String"> 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 id="getCode" resultType="java.lang.String" useCache="false" flushCache="false"> select 'TRD'||to_char(sysdate,'yyyymmdd')||lpad(to_char(SQ_ORD_PURCHASE_ID.nextval), 5, '0') code from dual </select>
總結
以上所述是小編給大家介紹的Oracle結合Mybatis實現(xiàn)取表TOP 10條數(shù)據(jù),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
Oracle隨機函數(shù)之dbms_random使用詳解
dbms_random是oracle提供的一個隨機函數(shù)包,本文將詳細介紹函數(shù)的使用,需要的朋友可以參考下2012-12-12oracle中fdisk導致的ASM磁盤數(shù)據(jù)丟失的解決方法
oracle中fdisk 導致的ASM磁盤數(shù)據(jù)丟失 有需要的朋友可參考一下2012-10-10oracle數(shù)據(jù)庫id自增及生成uuid問題
這篇文章主要介紹了oracle數(shù)據(jù)庫id自增及生成uuid問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05oracle數(shù)據(jù)庫定時任務dbms_job的用法詳解
這篇文章給大家詳細介紹了dbms_job的用法,用于安排和管理作業(yè)隊列,通過使用作業(yè),可以使ORACLE數(shù)據(jù)庫定期執(zhí)行特定的任務。有需要的朋友們可以參考借鑒。2016-09-09Oracle觸發(fā)器表發(fā)生了變化 觸發(fā)器不能讀它的解決方法(必看)
下面小編就為大家?guī)硪黄狾racle觸發(fā)器表發(fā)生了變化 觸發(fā)器不能讀它的解決方法(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04Oracle誤刪除表數(shù)據(jù)后的數(shù)據(jù)恢復詳解
這篇文章主要介紹了Oracle誤刪除表數(shù)據(jù)后的數(shù)據(jù)恢復詳解,需要的朋友可以參考下2015-08-08