介绍
使用Mybatis如何实现多对一或一对多的关联查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
首先,数据库量表之间字段关系(没有主外键)
studentmajor表的id字段对应的学生表里主要字段
<强>两个实体类强>
包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; } 公共List getStudents () { 返回学生; } 公共空间setStudents (List 学生){ 这一点。=学生; } }
定义两个接口
包com.dao; 进口并不知道; 进口java.util.Map; 进口com.model.Student; 公共接口StudentMapper {/* * *全表查询 */公共Listselectall ();/* * *根据专业查人员,给一对多用 */公共List selectz(整数); }
包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如何实现多对一或一对多的关联查询