springboot整合mybatis实现多表查询(一对一)
首先新建两个类,分别为Major(专业类)和Sclass(班级类),一个专业可以有多个班级,所以Major与Sclass的关系应为一对多,反过来一个班级只能对应一个专业,所以Sclass与Major的关系为一对一。
一、实体类信息如下
public class Major { private int id; private String majorName; private List<Sclass> sclassList; public Major() { } public Major(String majorName) { this.majorName = majorName; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getMajorName() { return majorName; } public void setMajorName(String majorName) { this.majorName = majorName; } public List<Sclass> getSclassList() { return sclassList; } public void setSclassList(List<Sclass> sclassList) { this.sclassList = sclassList; } }
package com.****.domain; public class Sclass { private int id; private int majorId; private String sclassName; private Major major; public Sclass() { } public Sclass(int majorId, String sclassName) { this.majorId = majorId; this.sclassName = sclassName; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getMajorId() { return majorId; } public void setMajorId(int majorId) { this.majorId = majorId; } public String getSclassName() { return sclassName; } public void setSclassName(String sclassName) { this.sclassName = sclassName; } public Major getMajor() { return major; } public void setMajor(Major major) { this.major = major; } }
二、一对一映射
@Mapper public interface MSmapper { @Select("select * from major_tab where id = #{id}") Major selectMajorById(@Param("id") Integer id); @Select("select * from sclass_tab") @Results({ @Result(id = true, property = "id", column = "id"), @Result(property = "major", column = "majorId", one = @One(select = "com.****.mapper.MSmapper.selectMajorById")) }) List<Sclass> selectAllSclass(); }
三、一对一service层代码
public interface MSService { List<Sclass> findAllSclass(); }
@Service public class MSServiceImpl implements MSService { @Autowired(required = false) private MSmapper mapper; @Override public List<Sclass> findAllSclass() { return mapper.selectAllSclass(); } }
四、一对一controller层代码
@RequestMapping("/selectSclass") public String selectSclass(Model model){ List<Sclass> list = service.findAllSclass(); model.addAttribute("list", list); return "sclass"; }
五、一对一前端HTML代码
<div class="container" style="margin-top: 60px"> <table class="table table-bordered table-hover table-striped"> <thead> <tr> <td>专业</td> <th>班级</th> </tr> </thead> <tbody> <tr th:each="sclass:${list}"> <td th:text="${sclass.major.majorName}"></td> <td th:text="${sclass.sclassName}"></td> </tr> </tbody> </table> </div>
六、显示结果