FIND_IN_SET
需求如下:有张用户表,表里有个字段叫school,意为这个用户上过哪些学校,数据库里存的就是字符串类型,存的值类似"2,5,12",要求就是查询出上过id为2的学校有哪些用户
解决方法:
SELECT * FROM XM_USER WHERE FIND_IN_SET('2',SCHOOL) > 0
COLLECTION
需求如下:有3张表,用户主表、用户日志表和图片表,日志表字段和主表字段一模一样,就是主表比日志表多了个ref_id,图片表也存了日志表的id叫ref_id,现在要求是查询出用户上传过哪些图片
解决方法:
1,先用collection建一个映射Map
<resultMap id="XmUserVoMap" type="com.xmliu.entity.XmUserVo"><result property="id" column="id"/><result property="userName" column="user_name"/><collection property="imageList" ofType="com.xmliu.entity.XmImage"><id property="id" column="image_id"/><result property="imageType" column="image_type"/><result property="imagePath" column="image_path"/><result property="refId" column="ref_id"/></collection>
</resultMap>
2,sql直接查
<select id="queryAllByLimit" resultMap="XmUserVoMap">selectd.*,i.id as image_id,i.image_path,i.image_type,i.ref_idfrom xm_user dleft join xm_image i on i.ref_id = d.ref_id
</select>
3,Mapper中定义的方法就能查到带imageList的实体类集合
List<XmUserVo> queryAllByLimit(@Param("xmUser")XmUser xmUser);
@Data
public class XmUserVo extends XmUser {@Schema(description = "图片列表")private List<XmImage> imageList;}