自我感觉和两张表的连接差不多(小白,刚刚学习Java不久,大佬勿喷)。 将三张表中分别取一两个对应数据连接起来。将其分为1,2,3。其中2为中间表,用来连接1,3表,2表中加入了字段 1.先在pojo中封装自己需要得到的几个类型 @TableId(value = "user_id",type = IdType.AUTO) private Integer userId; private String userName; private String userPwd; private String salt; private String email; private String phone; @TableField(exist = false) private String code; //这是需要的对象,将他引入。 @TableField(exist = false) private List<Score> listScore; @TableField(exist = false) private List<Paper> listPaper;
2.在xml中将几个表的数据用collection(association)连接起来,column对应数据库中的命名,property对应列对象中的名字 <resultMap id="userInfoScorePaper" type="com.hqyj.pojo.UserInfo"> <result column="user_id" property="userId" /> <result column="user_name" property="userName" /> <result column="user_pwd" property="userPwd" /> <result column="salt" property="salt" /> <result column="phone" property="phone" /> <result column="email" property="email" /> <collection property="listScore" ofType="com.hqyj.pojo.Score"> <id column="score_id" property="scoreId"/> <result column="user_id" property="userId" /> <result column="paper_id" property="paperId" /> <result column="score" property="score" /> <result column="save_time" property="saveTime" /> </collection> <collection property="listPaper" ofType="com.hqyj.pojo.Paper"> <id column="paper_id" property="paperId" /> <result column="paper_name" property="paperName" /> <result column="paper_score" property="paperScore" /> <result column="paper_time" property="paperTime" /> </collection> </resultMap>
3.编写sql语句 (resultMap对应上方的id,并且这个id对应mapper也叫dao层方法名)
<select id="queryScoreByUserName" resultMap="userInfoScorePaper" parameterType="java.lang.String"> SELECT u.user_name,s.score,p.paper_name,p.paper_score,s.save_time FROM user_info u INNER JOIN score s ON u.user_id = s.user_id INNER JOIN paper p ON p.paper_id = s.paper_id WHERE u.user_name =#{userName} </select>
本文含有隐藏内容,请 开通VIP 后查看