主页 > 知识库 > Oracle结合Mybatis实现取表TOP 10条数据

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

热门标签:网站排名优化 Linux服务器 AI电销 地方门户网站 百度竞价排名 呼叫中心市场需求 服务外包 铁路电话系统

之前一直使用mysql和informix数据库,查表中前10条数据十分简单:

最原始版本:

select top * from student

当然,我们还可以写的复杂一点,比如外加一些查询条件?

比如查询前10条成绩大于80分的学生信息 

添加了where查询条件的版本:

select top * from table where score > 80 

但是!!oracle中没有top啊!!!!那么该如何实现呢?

嗯,可以用rownum!

oracle中原始版本

select * from student where rownum  10

上面这个好像也没有复杂的地方。。但是问题来了,如果我们还希望加上分数大于80呢?

对于我这个oracle初学者来说,真的是费力。在这里就直接贴出来了,希望可以让一些人少费一些力! 

oracle添加了where查询条件的版本

select * from(
  select rownum rn,A.* from student where score > 80) 
where rn  10

简单分析一下上面的代码。实际上是先通过内嵌的sql语句查询出分数大于80的数据,再选择内嵌sql查询结果中的前10条数据 

最后附上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实现取表TOP 10条数据,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

您可能感兴趣的文章:
  • 解决mybatis一对多关联查询多条数据只显示一条的问题
  • 解决mybatis plus 分页查询有条数,total和pages都是零的问题
  • mybatis mysql delete in操作只能删除第一条数据的方法
  • Mybatis查询记录条数的实例代码
  • Mybatis RowBounds 限制查询条数的实现代码
  • Mybatis批量插入返回成功的数目实例

标签:湖南 黄山 铜川 衡水 仙桃 兰州 崇左 湘潭

巨人网络通讯声明:本文标题《Oracle结合Mybatis实现取表TOP 10条数据》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266