Oracle结合Mybatis实现取表的10条数据

之前一直使用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 &gt; 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 ]]&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代码在调用是总是获取到同一个序列的值,查询相关资料得知是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>

相关推荐:

Oracle如何更改表空间的数据文件位置

Oracle如何更改表空间的数据文件位置

Oracle如何更改表空间的数据文件位置

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享