现在有三个对象分别定义如下:
class Photo {
private String photoid;
private String photoname;
private String phototime;
private UserInfo user;
private PType ptype;
private int likenum;
private String photoremake;
}
UserInfo {
private int userid;
private String userno;
private String userpwd;
private String username;
private String email;
private String birthday;
}
class LikeInfo {
private int userid;
private List<Photo> photos;
}
Mapper接口中定义的方法:
/**
* 收藏图片
* @return
*/
public int saveLikeInfo(String photoid,int userid);
/**
* 查询个人收藏空间
* @param userid
* @return
*/
public LikeInfo getLikeInfoByUserId(int userid);
/**
* 分页查询所有收藏记录
* @param userid
* @return
*/
public List<LikeInfo> getLikeInfo(int index);
对应的配置文件xml:
首先定义一个resultMap:
<resultMap id="likeMapper" type="LikeInfo"> <result property="userid" column="userid" /> <collection property="photos" javaType="java.util.List" ofType="Photo"> <id property="photoid" column="photoid" /> <result property="photourl" column="photourl" /> <result property="photoname" column="photoname" /> <result property="likenum" column="likenum" /> <result property="photoremake" column="photoremake" /> </collection > </resultMap>
在这个resultMap中使用了collection标签,代表这里封装的是一个集合。
SQL语句如下:
<select id="getLikeInfoByUserId" parameterType="int" resultMap="likeMapper"> select l.*,p.photoname,p.photoremake,p.likenum from tb_likes l,tb_photos p where l.photoid=p.photoid and l.userid=#{userid} </select> <select id="getLikeInfo" resultMap="likeMapper"> select l.*,p.* from tb_likes l,tb_photos p where l.photoid=p.photoid limit #{index},20 </select> <insert id="saveLikeInfo" parameterType="LikeInfo"> insert into tb_likes <trim prefix="(" suffix=")" suffixOverrides="," > userid, photoid </trim> <trim prefix="values (" suffix=")" suffixOverrides="," > #{1},#{0} </trim> </insert>
在执行插入语句时,一开始传进来的是一个likeInfo的对象,准备使用forEach标签,结果没有写出来,在业务中进行了数据的处理。
转载于:https://blog.51cto.com/11144189/1749619