Oracle结合Mybatis实现取表的10条数据
程序员文章站
2022-03-25 15:30:42
...
之前一直使用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 < 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实现取表的10条数据的详细内容,更多请关注其它相关文章!
上一篇: php怎么将一个特殊字符串转为数组
下一篇: JavaScript运行机制之任务队列
推荐阅读
-
一次性获取多个oracle序列的值,实现关联表多数据的批量insert
-
Oracle + mybatis实现对数据的简单增删改查实例代码
-
使用Mybatis对数据库进行单表操作的实现示例
-
C#语言和SQLServer数据库结合使用,通过数据库中的表实现存储数据
-
Oracle+mybatis实现对数据的简单增删改查
-
详解Oracle 中实现数据透视表的几种方法
-
Oracle结合Mybatis实现取表TOP 10条数据
-
Oracle中如何用一个表的数据实现更新另一个表中的数据?
-
SpringBoot结合Mybatis实现创建数据库表的方法
-
Oracle + mybatis实现对数据的简单增删改查实例代码