Oracle结合Mybatis实现取表TOP 10条数据
之前一直使用mysql和informix数据库,查表中前10条数据十分简单:
最原始版本:
selecttop*fromstudent
当然,我们还可以写的复杂一点,比如外加一些查询条件?
比如查询前10条成绩大于80分的学生信息
添加了where查询条件的版本:
selecttop*fromtablewherescore>80
但是!!oracle中没有top啊!!!!那么该如何实现呢?
嗯,可以用rownum!
oracle中原始版本
select*fromstudentwhererownum<10
上面这个好像也没有复杂的地方。。但是问题来了,如果我们还希望加上分数大于80呢?
对于我这个oracle初学者来说,真的是费力。在这里就直接贴出来了,希望可以让一些人少费一些力!
oracle添加了where查询条件的版本
select*from( selectrownumrn,A.*fromstudentwherescore>80) wherern<10
简单分析一下上面的代码。实际上是先通过内嵌的sql语句查询出分数大于80的数据,再选择内嵌sql查询结果中的前10条数据
最后附上mybatis代码?
select* from( selectrownumrn,A.*fromstudentA whereSTATUS='99' andscore]]>#{scores,jdbcType=INTEGER}) wherern#{number,jdbcType=INTEGER}
上面的scores和number均为变量
ps:mybatis取Oracle序列,值相同问题处理
select'TRD'||to_char(sysdate,'yyyymmdd')||lpad(to_char(SQ_ORD_PURCHASE_ID.nextval),5,'0')codefromdual
上述mybatis代码在调用是总是获取到同一个序列的值,查询相关资料得知是mybatis的缓存问题:
加上useCache="false"flushCache="false"属性即可:
select'TRD'||to_char(sysdate,'yyyymmdd')||lpad(to_char(SQ_ORD_PURCHASE_ID.nextval),5,'0')codefromdual
总结
以上所述是小编给大家介绍的Oracle结合Mybatis实现取表TOP10条数据,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。