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.csdn.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.csdn.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>

六、显示结果

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值