• ADADADADAD

    如何使用Oracle结合Mybatis实现取表的10条数据[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:58:11

    作者:文/会员上传

    简介:

    最原始版本:select top * from student当然,我们还可以写的复杂一点,比如外加一些查询条件?比如查询前10条成绩大于80分的学生信息添加了where查询条件的版本:select top * from

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    最原始版本:

    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 Awhere 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条数据.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mybatisoracle数据