I have a table t_comment, and a table t_comment_photo.
t_comment has column id, content; t_comment_photo has column id, comment_id, photo_url. t_comment_pohto contains the url of comment photos, a comment can have 0 to many comment photos.
These are their java classes:
public class ToyComment {
private Integer id;
private String content;
private List<String> urls;
...
}
public class CommentPhoto {
private Integer id;
private String commentId;
private String comment_url;
...
}
Here is the <select>
content in mapper:
<select id="getToyCommentList"
resultType="com.domain.ToyComment">
c.id, c.content,p.user_photo_url userPhoto
from t_comment c left join t_comment_photo p
on c.id = p.comment_id
</select>
When I try to map the userPhoto queried from table t_comment_photo to a element of the list inside the java class ToyComment, I am getting errors.
The resultMap I am trying to fix is:
<resultMap id="ToyCommentResultMap" type="com.domain.ToyComment">
<result column="id" jdbcType="VARCHAR" property="id" />
<result column="content" jdbcType="VARCHAR" property="content" />
<!-- <result property="urls" jdbcType="VARCHAR" javaType="java.util.ArrayList" column="userPhoto" /> -->
<collection property="urls" javaType="list" jdbcType="VARCHAR" column="userPhoto"></collection>
</resultMap>
I tried both <property>
and <collection>
, but neither are working.
When I used <collection>
, I got "Mapped Statements collection already contains value for com.toy.mapper.ToyCommentMapper.getToyCommentListByToyId" error, when I used <result>
, I got "No typehandler found for property userPhotos".
Use "java.util.ArrayList" or "list" for javaType doesn't change the output error.
I tried to search for "mybatis map to string list", but most are about mapping to a list of objects.
How to fix it right?