请问 mybatis中的 association 可以嵌套使用吗

比如我能不能这么操作

<association property="">
        <association property=""></association>
</association>

我尝试过了 ,编译通过,但是运行的时候报错了 ,,,如果不行。

我现在尝试的功能是这样的 有三个类,A,B,C

c作为B的属性,B作为A的属性,我希望通过c的id一次查出a,b,c的数据,请问我的映射文件该怎么写呢

你完全可以不用这么写,应该是这么写

 <association property="">

</association>
<association property="">

</association>

你做什么需求,需要这样嵌套?

你看我标题 c类是b类的属性,b类是a类属性,,,,如果在c类映射文件中写的话,我可以直接怎么写吗




?

映射文件里每个、这种标签都对应着接口里的某个方法。标签是为了 建立 DB中 对应的表的字段 与,表所对应的实体类的属性之间的

映射关系。

建立的这种映射用来配合文件中所有标签

映射文件面向的应该是项目里对应的mapper接口,楼主我没太看明白C类映射文件是什么意思。

希望这样说能帮助理解一些








<!-- 集合中的property须为oftype定义的pojo对象的属性-->





你先熟悉一下写法吧,知道怎么用后,自然就明白怎样达到目的,多试几次就行,都这样的。
这个标签的说明 取自于https://www.cnblogs.com/kenhome/p/7764398.html

<resultMap type="cccsVideo" id="videoBaseResultMap">
        <id property="videoId" column="V_VIDEO_ID"/>
        <result property="submissionTime" column="V_SUBMISSION_TIME"/>
        <result property="userId" column="V_USER_ID"/>
        <result property="videoBlock" column="V_VIDEO_BLOCK"/>
        <result property="videoTitle" column="V_VIDEO_TITLE"/>
        <result property="videoDescription" column="V_VIDEO_DESCRIPTION"/>
        <result property="coinCount" column="V_COIN_COUNT"/>
        <result property="likeCount" column="V_LIKE_COUNT"/>
        <result property="playCount" column="V_PLAY_COUNT"/>
        <result property="videoStatus" column="V_VIDEO_STATUS"/>
        <result property="videoFilePath" column="V_VIDEO_FILE_PATH"/>
        <result property="videoCoverPath" column="V_VIDEO_COVER_PATH"/>
    </resultMap>

    <resultMap type="cccsVideo" id="exVideoBaseResultMap" extends="videoBaseResultMap">
        <association property="user" column="V_USER_ID" javaType="cccsUser" columnPrefix="U_"
            resultMap="com.glut.dao.UserMapper.baseResultMap">
        </association>

        <collection property="comments" column="V_VIDEO_ID" ofType="cccsComment" columnPrefix="C_">
            <result property="videoId" column="video_id"/>
            <result property="commentTime" column="comment_time"/>
            <result property="userId" column="user_id"/>
            <result property="commentContent" column="comment_content"/>
            <association property="commentUser" column="C_USER_ID" javaType="cccsUser" columnPrefix="U1_"
            resultMap="com.glut.dao.UserMapper.baseResultMap">
            </association>
        </collection>
    </resultMap> 

这样嵌套 resultMap="com.glut.dao.UserMapper.baseResultMap">
这个查不出来 但是sql在数据库执行能直接查询出来

 <select id="selectVideoById" parameterType="int" resultMap="exVideoBaseResultMap">
        SELECT v.video_id V_VIDEO_ID,
               v.submission_time V_SUBMISSION_TIME,
               v.user_id V_USER_ID,
               v.video_block V_VIDEO_BLOCK,
               v.video_title V_VIDEO_TITLE,
               v.video_description V_VIDEO_DESCRIPTION,
               v.coin_count V_COIN_COUNT,
               v.like_count V_LIKE_COUNT,
               v.play_count V_PLAY_COUNT,
               v.video_status V_VIDEO_STATUS,
               v.video_file_path V_VIDEO_FILE_PATH,
               v.video_cover_path V_VIDEO_COVER_PATH,
               u.user_id U_USER_ID,
               u.register_time U_REGISTER_TIME,
               u.user_name U_USER_NAME,
               u.pass_word U_PASS_WORD,
               u.phone_number U_PHONE_NUMBER,
               u.nick_name U_NICK_NAME,
               u.coin_count U_COIN_COUNT,
               u.today_login_status U_TODAY_LOGIN_STATUS,
               u.user_status U_USER_STATUS,
               u.user_type U_USER_TYPE,
               c.video_id C_VIDEO_ID,
               c.comment_time C_COMMENT_TIME,
               c.user_id C_USER_ID,
               c.comment_content C_COMMENT_CONTENT,
               u1.user_id U1_USER_ID,
               u1.register_time U1_REGISTER_TIME,
               u1.user_name U1_USER_NAME,
               u1.pass_word U1_PASS_WORD,
               u1.phone_number U1_PHONE_NUMBER,
               u1.nick_name U1_NICK_NAME,
               u1.coin_count U1_COIN_COUNT,
               u1.today_login_status U1_TODAY_LOGIN_STATUS,
               u1.user_status U1_USER_STATUS,
               u1.user_type U1_USER_TYPE
        FROM cccs_video v
        LEFT OUTER JOIN cccs_user u
        ON (v.user_id = u.user_id)
        LEFT OUTER JOIN cccs_comment c
        ON (v.video_id = c.video_id)
        LEFT OUTER JOIN cccs_user u1
        ON (c.user_id = u1.user_id)
        WHERE v.video_id = #{videoId}
    </select>

可以的,但是需要和conllection交替使用,如

 <association property="">
        <collection property=""></collection>
</association>