ホームページ >データベース >mysql チュートリアル >Oracle は Mybatis を組み合わせてテーブルから 10 個のデータを取得します
私は以前に mysql と infomix データベースを使用していましたが、テーブル内の最初の 10 個のデータを確認するのは非常に簡単です。この記事では、テーブルから必要な 10 個のデータを実現するために主に Oracle と Mybatis の関連情報を紹介します。皆さんの参考になれば幸いです。
オリジナルバージョン:
select top * from student
もちろん、クエリ条件を追加するなど、より複雑に記述することもできます。
たとえば、スコアが 80 ポイントを超える上位 10 位の学生情報をクエリします。
where クエリ条件の追加バージョン:
select top * from table where score > 80
しかし! !オラクルにトップはいない! ! ! !では、どうすればそれを達成できるのでしょうか?
そうですね、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
上記のコードを簡単に分析してください。実際、スコアが 80 を超えるデータは、最初に埋め込み SQL ステートメントを通じてクエリされ、次に埋め込み 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>
上記のスコアと数値は両方とも変数です
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 はどのように変更しますかテーブルスペースのデータファイルの場所
Oracleデータベーステーブルのフィールドの順序を変更する方法
以上がOracle は Mybatis を組み合わせてテーブルから 10 個のデータを取得しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。