現在有三個對象分別定義如下:
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標籤,結果沒有寫出來,在業務中進行了數據的處理。