使用Mybatis如何实现多对一或一对多的关联查询

  介绍

使用Mybatis如何实现多对一或一对多的关联查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

首先,数据库量表之间字段关系(没有主外键)

studentmajor表的id字段对应的学生表里主要字段

使用Mybatis如何实现多对一或一对多的关联查询

<强>两个实体类

包com.model;
  进口java.util.Date;
  公开课学生{
  私人整数sno;
  私人字符串sname;
  私人字符串ssex;
  私人整数sclass;
  私人StudentMajor StudentMajor;
  公共的学生(){
  超级();
  }
  公开学生(ssex sname整数sno,字符串,字符串,整数sclass StudentMajor StudentMajor) {
  超级();
  这一点。sno=sno;
  这一点。sname=sname;
  这一点。ssex=ssex;
  这一点。sclass=sclass;
  这一点。studentmajor=studentmajor;
  }
  公共StudentMajor getStudentmajor () {
  返回studentmajor;
  }
  公共空间setStudentmajor (StudentMajor StudentMajor) {
  这一点。studentmajor=studentmajor;
  }
  公共整数getSno () {
  返回sno;
  }
  公共空间setSno(整数sno) {
  这一点。sno=sno;
  }
  公共字符串getSname () {
  返回sname;
  }
  公共空间setSname(字符串sname) {
  这一点。sname=sname;
  }
  公共字符串getSsex () {
  返回ssex;
  }
  公共空间setSsex(字符串ssex) {
  这一点。ssex=ssex;
  }
  @Override
  公共字符串toString () {
  返回“学生(sno=?+ sno +“, sname=?+ sname +“, ssex=?+ ssex +“, sclass=?+ sclass +“, studentmajor=?
  + studentmajor +“]”;
  }
  公共整数getSclass () {
  返回sclass;
  }
  公共空间setSclass(整数sclass) {
  这一点。sclass=sclass;
  }
  }
包com.model;
  进口并不知道;
  公开课StudentMajor {
  私人整数id;
  私人字符串mcode;
  私人字符串mname;
  私人List学生;
  公共StudentMajor () {
  超级();
  }
  公共StudentMajor (mcode整数id字符串,字符串mname List学生){
  超级();
  这一点。id=id;
  这一点。mcode=mcode;
  这一点。mname=mname;
  这一点。=学生;
  }
  @Override
  公共字符串toString () {
  返回“StudentMajor [id=?+身份证+“,mcode=?+ mcode +“, mname=?+ mname +“,学生=?+学生+“]”;
  }
  公共整数getId () {
  返回id;
  }
  公共空间setId(整数id) {
  这一点。id=id;
  }
  公共字符串getMcode () {
  返回mcode;
  }
  公共空间setMcode(字符串mcode) {
  这一点。mcode=mcode;
  }
  公共字符串getMname () {
  返回mname;
  }
  公共空间setMname(字符串mname) {
  这一点。mname=mname;
  }
  公共ListgetStudents () {
  返回学生;
  }
  公共空间setStudents (List学生){
  这一点。=学生;
  }
  }

定义两个接口

包com.dao;
  进口并不知道;
  进口java.util.Map;
  进口com.model.Student;
  公共接口StudentMapper {/* *
  *全表查询
  */公共Listselectall ();/* *
  *根据专业查人员,给一对多用
  */公共Listselectz(整数);
  }
包com.dao;
  进口并不知道;
  进口com.model.StudentMajor;
  公共接口StudentMajorMapper {/* *
  *全表查询
  * @return
  */公共ListselectAll ();/* *
  *根据主键查数据,给多对一用
  * @param id
  * @return
  */公共StudentMajor选择(整数id);
  }

定义两个实体类的映射方法

& lt;及# 63;xml version=?.0”;编码=癠TF-8", # 63;比;   & lt; !文档类型映射器   公众“-//mybatis.org//DTD Mapper 3.0//EN"   “http://mybatis.org/dtd/mybatis-3-mapper.dtd"比;   & lt;映射器命名空间=癱om.dao.StudentMapper"祝辞   & lt; !——多对一查询——比;   & lt; resultMap类型=癝tudent"id=皊list"比;   & lt; !——跟一对一一样用协会标签,实体类定义的成员,要跟数据库字段名对应上——比;   & lt;协会财产=皊tudentmajor"列=癿ajor"   选择=癱om.dao.StudentMajorMapper.select"/比;& lt; !——用接口里定义的方法,根据学生表中主要的字段查出对应数据——比;   & lt;/resultMap>   & lt; !——查全部——比;   & lt;选择id=皊electall"resultMap=皊list"比;   从学生选择*   & lt;/select>   & lt; !,根据专业查人员——比;   & lt;选择id=皊electz"parameterType=癐nteger"resultType=皊tudent"比;   从学生年代select * s.major=#{主要}   & lt;/select>   & lt;/mapper>

使用Mybatis如何实现多对一或一对多的关联查询