Heim  >  Artikel  >  Datenbank  >  Oracle kombiniert Mybatis, um 10 Daten aus der Tabelle zu erhalten

Oracle kombiniert Mybatis, um 10 Daten aus der Tabelle zu erhalten

小云云
小云云Original
2017-12-11 14:38:572654Durchsuche

Ich habe zuvor MySQL- und Informix-Datenbanken verwendet. Es ist sehr einfach, die ersten 10 Daten in der Tabelle nachzuschlagen: In diesem Artikel werden hauptsächlich die relevanten Informationen von Oracle und Mybatis vorgestellt, um die 10 Daten aus der Tabelle zu implementieren Ich muss darauf verweisen. Ich hoffe, es kann jedem helfen.

Originalversion:

select top * from student


Natürlich können wir es auch komplizierter schreiben, Fügen Sie beispielsweise einige zusätzliche Abfragebedingungen hinzu?

Fragen Sie beispielsweise die Top-10-Studenteninformationen mit einer Punktzahl von mehr als 80 Punkten ab.

Version der Where-Abfragebedingungen hinzugefügt:

select top * from table where score > 80

Aber! ! Es gibt kein Top in Oracle! ! ! ! Wie kann man es erreichen?

Nun, Sie können Rownum verwenden!

Die Originalversion in Oracle

select * from student where rownum < 10

Das Obige scheint nichts Kompliziertes zu sein. . Aber hier stellt sich die Frage: Was ist, wenn wir immer noch eine Punktzahl von mehr als 80 hinzufügen möchten?

Für mich, einen Oracle-Anfänger, ist es wirklich mühsam. Ich habe es gerade hier gepostet, in der Hoffnung, dass es einigen Leuten etwas Mühe erspart!

Oracle hat eine Version der Where-Abfragebedingungen hinzugefügt

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

Analysieren Sie kurz den obigen Code. Tatsächlich werden die Daten mit einer Punktzahl von mehr als 80 zuerst über die eingebettete SQL-Anweisung abgefragt und dann werden die ersten 10 Daten im eingebetteten SQL-Abfrageergebnis ausgewählt

Zum Schluss wird der Mybatis-Code angehängt?

<select id="selectStudent" parameterType="hashmap" resultMap="BaseResultMap">
  select *
  from (
  select rownum rn, A.* from student A
  where STATUS = &#39;99&#39;
  and score <![CDATA[>]]> #{scores,jdbcType=INTEGER}) 
  where rn <![CDATA[<=]]> #{number,jdbcType=INTEGER}
 </select>

Die oben genannten Werte und Zahlen sind Variablen

ps: mybatis übernimmt die Oracle-Sequenz, die Werte ​​sind die gleichen Problembehandlungen

<select id="getCode" resultType="java.lang.String">
  select &#39;TRD&#39;||to_char(sysdate,&#39;yyyymmdd&#39;)||lpad(to_char(SQ_ORD_PURCHASE_ID.nextval), 5, &#39;0&#39;) code from dual
</select>

Der obige Mybatis-Code erhält beim Aufruf von Check immer den Wert derselben Sequenz die relevanten Informationen, um herauszufinden, ob es sich um ein Caching-Problem bei Mybatis handelt:

plus das useCache="false" flushCache="false" -Attribut:

<select id="getCode" resultType="java.lang.String" useCache="false" flushCache="false">
select &#39;TRD&#39;||to_char(sysdate,&#39;yyyymmdd&#39;)||lpad(to_char(SQ_ORD_PURCHASE_ID.nextval), 5, &#39;0&#39;) code from dual
</select>

Verwandte Empfehlungen:

Wie ändert Oracle den Datendateispeicherort des Tabellenbereichs?

Wie ändert man die Reihenfolge der Felder in der Oracle-Datenbanktabelle?

Oracle-Abfrage Tabellenname und Tabellenspaltenname

Das obige ist der detaillierte Inhalt vonOracle kombiniert Mybatis, um 10 Daten aus der Tabelle zu erhalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn