java - Comment mapper un à plusieurs dans Mybatis
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-17 10:07:25
0
3
563

Par exemple, il existe une classe d'entité

public class AnswerDto{ //一个回复的类,一个问题可能会有多个回复
    int id;
    int askId;//问题id
    List<String> answers; //回复的列表
}

J'ai écrit ceci à l'origine, mais c'était faux T0T, comment dois-je mapper le contenu sur List<String>

<select id="getAns" parameterType="int" resultMap="uiy">
    select
    id, 
    ask_id AS "askId",
    content
    from t_answer where ask_id = #{_parameter}
</select>

<resultMap type="AnswerDto" id="uiy">
    <id property="id" column="id"/>
    <result property="askId" column="askId" />
    <collection property="ls" ofType="string">
        <constructor>
            <arg column="content"/>
        </constructor>
    </collection>
</resultMap>
曾经蜡笔没有小新
曾经蜡笔没有小新

répondre à tous(3)
伊谢尔伦

mybatis détermine la relation de mappage définie en fonction de la balise <id> Si vous devez utiliser votre table, vous pouvez la mapper comme ceci

.
<id column="askId" property="askId" />
<result column="id" property="id"/>
<collection property="answers" ofType="java.lang.String" javaType="java.util.List">
    <result column="content" />
</collection>
左手右手慢动作

L'affiche originale devrait avoir une table manquante ici, qui est la table des questions.

Avec le tableau de questions, la définition de DTO devrait être comme ceci.

public class QuestionDTO {
     int questionId;
     String questionDesc;
     List<AnswerDTO> answers; // Answers of the question
     int created; // 创建时间
     int updated; // 更新时间
}

public class AnswerDTO{ //一个回复的类,一个问题可能会有多个回复
    int id;
    int questionId; // 问题id
    String content; // 答案内容
    int created; // 创建时间
    int updated; // 更新时间
}

À l'heure actuelle, il existe de nombreuses solutions de requêtes associées pour mybatis, je joindrai un lien.

Requête associée à Mybatis (requête imbriquée)

Il existe de nombreuses informations en ligne sur les requêtes liées à mybatis. Vous pouvez en rechercher davantage.

Une dernière suggestion, il est préférable de ne pas effectuer de requêtes associées. La logique d'assemblage des données est placée dans le code, ce qui facilite la future transformation de la base de données. Car à mesure que la quantité de données devient de plus en plus grande, les performances des requêtes associées sont médiocres et il n'est pas facile de transformer la sous-base de données et les sous-tables. Cependant, tout cela repose sur la croissance substantielle de l'entreprise. À l’heure actuelle, il serait bon que l’affiche commence à cultiver cette prise de conscience.

给我你的怀抱

Le mappage des champs de table vers des champs d'objets complexes peut être effectué à l'aide d'un TypeHandler personnalisé.
eg :
Mappage des champs json vers les classes Java dans MyBatis
http://www.cnblogs.com/watery...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal