У меня есть таблица t_comment и таблица t_comment_photo.
t_comment имеет идентификатор столбца, содержимое;t_comment_photo имеет идентификатор столбца, comment_id, photo_url.t_comment_pohto содержит URL фотографий с комментариями, комментарий может содержать от 0 до многих фотографий с комментариями.
Это их классы java:
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;
...
}
Вот содержание <select>
в 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>
Когда я пытаюсь сопоставить userPhoto, запрошенный из таблицы t_comment_photo, с элементом списка внутри класса Java ToyComment, я получаю ошибки.
Карта результата, которую я пытаюсь исправить,:
<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>
Я пробовал оба <property>
и <collection>
, но ни один из них не работает.
Когда я использовал <collection>
, я получил сообщение «Коллекция Mapped Statements уже содержит значение для com.toy.mapper.ToyCommentMapper.getToyCommentListByToyId», когда я использовал <result>
, я получил «Обработчик типов не найден для свойстваuserPhotos».Используйте «java.util.ArrayList» или «список», чтобы javaType не изменил ошибку вывода.
Я пытался найти «mybatis map to string list», но большинство из них касаются отображения в списокобъекты.
Как это исправить правильно?