[JAVA] Comment changer dynamiquement le nom de la colonne acquis par MyBatis

Comment changer dynamiquement le nom de la colonne acquis par MyBatis

Afin de passer dynamiquement la valeur de la condition de la clause where dans MyBatis, je pense qu'il est courant de la traiter comme une instruction préparée en utilisant "#" comme indiqué ci-dessous.

Fichier de définition SQL.xml


<select id="getHogeValue" resultType="java.util.Map">
select * 
form hoge_table
where foo_1 = #{foovalue}
</select>

Cette section décrit comment modifier dynamiquement les colonnes à acquérir. En d'autres termes, il est utile lorsque la colonne spécifiée dans la clause select est indéfinie.

environnement

Java:JDK1.7 MyBatis:mybatis-3.2.5.jar

Méthode de mise en œuvre

Au lieu de le passer comme valeur d'une instruction préparée Utilisez "$" pour passer sous forme de chaîne.

Voici un exemple.

Classe d'accès aux données.java


    //Définir la partie dynamique du nom de la colonne dans List
    List<Integer> columnIdList = Arrays.asList(1,2,3,4);
    
    //Définir la liste de pièces dynamiques de nom de colonne comme Map
    Map params = new HashMap();
    params.put("column_id_list", columnIdList);
    
    //FOO de la table Hoge_1, FOO_2, FOO_3, FOO_4, BAR_1, BAR_2, BAR_3, BAR_Obtenez 4
    List<Map> hogeValueLsit = hogeTableMapper.getHogeValue(params);
    
    //Vérifiez le contenu acquis
    for (Map elm : hogeValueLsit) {
      int idx = 0;
      for (Integer columnId : columnIdList) {
        
        String foo = (String)elm.get("FOO_"+columnId);
        System.out.println("FOO_" + idx + "Le second est" + foo + "est.");
        
        String bar = (String)elm.get("BAR_"+columnId);
        System.out.println("BAR_" + idx + "Le second est" + bar + "est.");
        
      }
    }

Fichier de définition SQL.xml


    <select id="getHogeValue" resultType="java.util.Map">
    select 
      <foreach item="column_id" collection="column_id_list">
         foo_${column_id}
        ,bar_${column_id}
      </foreach>
    from hoge_table 
    </select>

point important

Notez que le nom de la colonne est "lettre supérieure" lors de la récupération côté Java Même s'il est rendu plus bas que «foo_» du côté du fichier de définition SQL La clé Map côté Java ne peut être obtenue qu'avec "FOO_" en majuscule.

c'est tout.

Recommended Posts

Comment changer dynamiquement le nom de la colonne acquis par MyBatis
[Ruby on Rails] Comment changer le nom de la colonne
[Rails] Comment changer le nom de colonne de la table
[Swift] Comment modifier dynamiquement la hauteur de la barre d'outils sur le clavier
Comment changer le nom de l'application dans les rails
[Rails] Comment créer une table, ajouter une colonne et changer le type de colonne
Comment référencer une colonne lors du remplacement de la méthode de nom de colonne dans ActiveRecord
Comment changer l'action avec plusieurs boutons d'envoi
Comment revenir à l'écran précédent par opération Swipe
[Java] Comment extraire le nom du fichier du chemin
Comment passer à l'écran des détails en cliquant sur l'image
Changez la clé primaire de la base de données (MySQL) sur n'importe quelle colonne.
[Ruby on Rails] Remplacez l'ID d'URL par le nom de la colonne
[Java] Comment afficher les jours acquis par LocalDate et DateTimeformatter en japonais
Comment obtenir le nom d'une classe / méthode exécutée en Java
Comment connecter les chaînes de la liste séparées par des virgules
Git Manière simple de revenir à l'état avant le changement (avant la validation)
Comment modifier la valeur de réglage de Springboot Hikari CP
[Rails] Comment afficher une liste de messages par catégorie
Comment modifier le contenu du fichier jar sans décompresser
Comment définir l'adresse IP et le nom d'hôte de CentOS8
[Rails] Comment introduire le kaminari avec Slim et changer le design
[Rails] Comment changer le titre de la page du navigateur pour chaque page
Utilisez JUL pour enregistrer le journal d'exécution de SQL émis par MyBatis
Comment obtenir l'identifiant de la clé PRIMAY incrémentée automatiquement dans MyBatis
[chown] Comment changer le propriétaire d'un fichier ou d'un répertoire
[Pour les débutants] Comment obtenir le nom de la ligne de chemin de fer différée Ruby
[Rails 5] Comment afficher l'écran de changement de mot de passe lors de l'utilisation de l'appareil
Comment utiliser la méthode link_to
Comment utiliser la méthode include?
Basculer dynamiquement la base de données à laquelle se connecter
Comment trouver l'angle moyen
Comment utiliser la classe wrapper
Comment changer kube-proxy en mode ipvs.
Comment utiliser l'annotation MyBatis Mapper
Comment nommer des variables en Java
Comment ajouter la fonction de suppression
Comment passer du HTML à Haml
[Swing] Comment afficher un nom arbitraire dans la barre de menu sur Mac
Ajoutez la date aux statistiques GC acquises par gcutil et affichez-la.
Comment modifier le nombre maximum et maximum de données POST dans Spark
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
Comment faire de https le schéma de l'URL générée par l'assistant d'URL de Rails
[swift5] Comment changer la couleur de TabBar ou la couleur de l'élément de TabBar avec le code
Comment éviter le traitement en double par addEventListener
[Java] Comment utiliser la classe File
Comment nommer les variables 7 sélections d'inconfort
Comment désactiver le regroupement d'erreurs
[Rails] Comment utiliser la méthode de la carte