Maison  >  Article  >  base de données  >  Oracle combine Mybatis pour obtenir 10 éléments de données de la table

Oracle combine Mybatis pour obtenir 10 éléments de données de la table

小云云
小云云original
2017-12-11 14:38:572596parcourir

J'ai déjà utilisé des bases de données mysql et informix. Il est très simple de rechercher les 10 premières données du tableau : cet article présente principalement les informations pertinentes d'Oracle et de Mybatis pour implémenter les 10 données des amis qui. j'en ai besoin, je peux y faire référence. J'espère que cela pourra aider tout le monde.

Version originale :

select top * from student


Bien sûr, on peut aussi l'écrire de manière plus compliquée, Par exemple, ajouter des conditions de requête supplémentaires ?

Par exemple, interrogez les 10 principales informations sur les étudiants avec des scores supérieurs à 80 points.

Version ajoutée des conditions de requête Where :

select top * from table where score > 80

Mais ! ! Il n'y a pas de top dans Oracle ! ! ! ! Alors comment y parvenir ?

Eh bien, vous pouvez utiliser rownum !

La version originale dans Oracle

select * from student where rownum < 10

Il ne semble y avoir rien de compliqué à propos de ce qui précède. . Mais voici la question : que se passe-t-il si nous voulons quand même ajouter un score supérieur à 80 ?

Pour moi, débutant en Oracle, c'est vraiment laborieux. Je viens de le poster ici, en espérant que cela puisse épargner des efforts à certaines personnes !

Oracle a ajouté une version des conditions de requête Where

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

Analysez brièvement le code ci-dessus. En fait, les données avec un score supérieur à 80 sont d'abord interrogées via l'instruction SQL intégrée, puis les 10 premières données du résultat de la requête SQL intégrée sont sélectionnées

Enfin, le code mybatis est joint ?

<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>

Les scores et le nombre ci-dessus sont des variables

ps : mybatis prend la séquence Oracle, les valeurs ​​sont les mêmes Gestion des problèmes

<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>

Le code mybatis ci-dessus obtient toujours la valeur de la même séquence lorsqu'il est appelé Check. les informations pertinentes pour le savoir C'est un problème de mise en cache avec mybatis :

plus l'attribut useCache="false" flushCache="false"  :

<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>

Recommandations associées :

Comment Oracle modifie-t-il l'emplacement du fichier de données de l'espace table

Comment modifier l'ordre des champs dans la table de la base de données Oracle

Requête Oracle Nom de la table et nom de la colonne de la table

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn