[JAVA] Mappage à une classe avec un objet de valeur dans How to My Batis

Chose que tu veux faire

J'ai récemment étudié le design orienté objet. Lors de l'utilisation d'objets de domaine, l'existence de classes pratiques dans la base de données semble gênante, J'espérais recevoir la valeur obtenue de la base de données directement sous la forme d'un objet de domaine: frowning2:

J'étudie toujours, alors j'ai essayé d'utiliser MyBatis comme une solution, Je voudrais savoir s'il existe un bon moyen d'obtenir la valeur de la base de données: bow:

environnement

Essayez SELECT avec My Batis

Obtenez la classe MeetingRoom à l'aide de MyBatis

public class MeetingRoom {
    private int id;
    private String name;

    ...
}
@Mapper
public interface MeetingRoomMapper {

    MeetingRoom findById(int roomId);
}
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.spring.tutorial.MeetingRoomMapper">
    <select id="findById" resultType="com.spring.tutorial.MeetingRoom">
        SELECT
            room_id as id,
            room_name as name
        FROM
            meeting_room
        WHERE
            room_id = #{room_id}
    </select>
</mapper>

Si vous spécifiez la valeur de retour de findById de la classe Mapper et de MeetingRoom comme ResultType du fichier Mapper, elle sera renvoyée sous la forme de MeetingRoom. De plus, étant donné que le nom de la colonne et le nom de la propriété doivent correspondre, ils sont spécifiés dans la clause AS.

Utiliser un objet de valeur

Remplacez l'ID MeetingRoom de type int par la classe Id.

public class MeetingRoom {
    //Changer en objet de valeur
    private Id id;
    private String name;

    ...
}
public class Id {
    private static final int MIN = 1;
    private Integer value;

    Id(int value) {
        if (value < MIN) throw new IllegalArgumentException("Valeur illégale. valeur:" + value);

        this.value = value;
    }
 
     ...
}

Utilisez ResultMap pour définir la classe Id et la classe MeetingRoom.

    <resultMap id="IdMap" type="com.spring.tutorial.Id" >
        <id property="value" column="room_id" />
    </resultMap>

    <resultMap id="MeetingRoomMap" type="com.spring.tutorial.MeetingRoom">
        <result property="name" column="room_name" />
        <association property="id" resultMap="IdMap"/>
    </resultMap>
    
    <select id="findById" resultMap="MeetingRoomMap">
        SELECT * FROM meeting_room WHERE room_id = #{room_id}
    </select>

Remplacez le ResultType de SELECT par ResultMap et spécifiez le ResultMap de MeetingRoom. Utilisez ** association ** pour utiliser ResultMap dans ResultMap. Lorsqu'il y a un résultat dans la propriété du même objet, soyez prudent car une erreur se produira si vous ne décrivez pas l'association ci-dessous: point_up_2_tone1:

Le contenu du type d'élément "resultMap" doit correspondre "(constructeur?, Id *, résultat *, association *, collection *, discriminateur?)".

Résumé

MyBatis est bon car vous n'avez pas besoin d'augmenter le nombre de classes pratiques dans la base de données: détendu:

référence

Principes de conception de système utiles sur le terrain mybatis - Fichier XML du mappeur

Recommended Posts

Mappage à une classe avec un objet de valeur dans How to My Batis
Points lors du mappage d'un objet de valeur dans MyBatis
Comment supprimer un objet new_record construit avec Rails
[Comment insérer une vidéo dans un hameau avec Rails]
Comment stocker des objets dans PostgreSQL au format JSON avec MyBatis (Mapper XML)
Comment passer un objet à Mapper dans MyBatis sans passer par un argument
Comment déplacer une autre classe avec une action de bouton d'une autre classe.
Comment configurer un proxy avec authentification dans Feign
Comment utiliser la même classe Mapper dans plusieurs sources de données avec Spring Boot + MyBatis
Comment créer un fichier jar sans dépendances dans Maven
Comment obtenir la valeur de boolean avec jQuery sous forme simple de rails
Comment renommer un modèle avec des contraintes de clé externes dans Rails
Comment penser la conception de classe (division) dans un système d'entreprise (1)
Comment insérer une vidéo dans Rails
Comment publier une bibliothèque dans jCenter
[Java] Comment rechercher des valeurs dans un tableau (ou une liste) avec la méthode contains
[Mémo personnel] Comment interagir avec le générateur de nombres aléatoires en Java
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
Développement Android, comment vérifier null dans la valeur de l'objet JSON
Comment démarrer un conteneur Docker avec un volume monté dans un fichier de commandes
Comment obtenir les informations d'identification Keycloak dans la classe d'intercepteur
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment afficher une page Web en Java
Comment créer une classe qui hérite des informations de classe
Comment obtenir une classe depuis Element en Java
Comment exécuter une tâche djUnit dans Ant
Comment ajouter un chemin de classe dans Spring Boot
Comment créer un thème dans Liferay 7 / DXP
Comment ajouter conditionnellement une classe html.erb dans Rails
Comment tout insérer en même temps avec MyBatis
Comment implémenter une fonctionnalité similaire dans Rails
Comment créer facilement un pull-down avec des rails
Comment générer automatiquement un constructeur dans Eclipse
Comment obtenir l'ID d'un utilisateur qui s'est authentifié avec Firebase dans Swift
Comment vérifier si une variable d'instance est définie dans une classe Ruby
Comment sortir un pot avec la classe principale spécifiée par gradle dans IntellijIDEA
Comment stocker simultanément des données dans un modèle associé à une forme imbriquée (Rails 6.0.0)
Comment tester une classe qui gère application.properties avec SpringBoot (requête: signalée)
Comment intégrer des variables JavaScript dans HTML avec Thymeleaf
Comment implémenter UICollectionView avec du code uniquement dans Swift
Comment effacer toutes les données d'une table particulière
Comment appeler des fonctions en bloc avec la réflexion Java
Comment créer un environnement Java en seulement 3 secondes
Comment implémenter une fonctionnalité intéressante dans Ajax avec Rails
Comment envoyer une valeur en HTML sans transition d'écran
Comment basculer Tomcat context.xml avec Eclipse WTP
Comment utiliser la bibliothèque Z3 dans Scala avec Eclipse
Comment créer un projet Spring Boot dans IntelliJ
Comment générer manuellement un JWT avec Knock in Rails
Comment créer un URI de données (base64) en Java
[Ruby / Rails] Définissez une valeur unique (unique) dans la classe
Comment afficher un aperçu du navigateur avec VS Code
Comment supprimer des images non balisées en masse avec Docker
Comment écrire une recherche de comparaison de dates dans Rails
Comment se moquer d'un appel de super méthode dans PowerMock
Comment utiliser la bibliothèque JDD dans Scala avec Eclipse
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Comment convertir un fichier en tableau d'octets en Java