比如我能不能这么操作
<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类映射文件中写的话,我可以直接怎么写吗
?
映射关系。
建立的这种映射用来配合文件中所有标签
映射文件面向的应该是项目里对应的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>