mybatis使用注解实现一对多查询


一、实体类(getset方法,toString,构造方法忽略)

public class Dept {
    private Integer deptid;
    private String dname;
    private String dloc;
    private Set<Emp> emps= new HashSet<>();
}
public class Emp {
    private Integer empid;
    private String ename;
    private String esex;
    private Date ehiredate;
    private Double esal;
    private Dept dept;
}

二、接口方法

public interface DeptMapper {
    
    @Select("select * from dept ")
    @Results({@Result(property = "deptid" ,column = "deptid"),
        @Result(property = "dname" ,column = "dname"),
        @Result(property = "dloc" ,column = "dloc"),
        @Result(property = "emps",javaType = Set.class, column = "deptid",
        many = @Many(select="com.gx.mapper.EmpMapper.selectEmpByDeptId"))
        })
    public List<Dept> selectAll();
}
public interface EmpMapper {
    /**
     * 根据部门id查询员工信息
     */
    @Select("select * from emp where deptid=#{deptid}")
    public List<Emp>selectEmpByDeptId(Integer deptid);
}

三、测试

public class myTest {

    SqlSession session = MyBatisUtils.openSession();
    DeptMapper deptMapper = session.getMapper(DeptMapper.class);
    
    @Test
    public void selectAllEmp() {
        List<Dept> list = deptMapper.selectAll();
        for (Dept d : list) {
            System.out.println(d);
        }
        MyBatisUtils.closeSession(session);
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM