本篇文章和大家了解一下Mybatis-Plus多表关联查询的操作例子。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
1、 controller控制层
2、dao层, 项目的目录结构: 有以下四个包:
1、 controller控制层
2、dao层,接口
3、pojo,shiulilei
4、service服务层
部门表:dept
员工表:emp
假设要查询每个员工所属的部门(或位置等信息),就需要将两张表连接起来,使用SQL语句很简单(select * from emp,dept where emp.deptno=dept.deptno),但是在Java程序中怎么写就比较复杂了。
1)dept
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("dept")
public class Dept implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Integer deptno;
private String dname;
private String loc;
}
2)emp
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("emp")
public class Emp implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("empno")
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private LocalDateTime hiredate;
private BigDecimal sal;
private BigDecimal comm;
private Integer deptno;
private Dept dept;//多表关联需要查询的数据
}
在Emp类中多了一个Dept对象,这个对象包含了每个员工对应部门的信息。
<mapper namespace="com.nb.spring_boot.api.dao.IEmpDao">
<resultMap id="empMapper" type="com.nb.spring_boot.api.pojo.Emp">
<association property="dept" column="deptno" select="com.nb.spring_boot.api.dao.IDeptDao.selectById"/>
</resultMap>
<select id="queryEmps" resultMap="empMapper">
select * from emp
</select>
</mapper>
resultMap里的id属性(empMapper)里面可以随便写一个变量名,可以不叫empMapper,select里的selectById在IDeptDao接口中要有该方法
Dept selectById(Integer deptno);
<select id="selectById" resultType="com.nb.spring_boot.api.pojo.Dept">
select * from dept where deptno=#{deptno}
</select>
public interface IDeptDao extends BaseMapper<Dept> {
Dept selectById(Integer deptno);
}
public interface IEmpDao extends BaseMapper<Emp> {
IPage<Emp> queryEmps(IPage<Emp> page,@Param(Constants.WRAPPER) Wrapper<Emp> wrapper);
}
public interface IEmpService extends IService<Emp> {
IPage<Emp> queryEmps(IPage<Emp> result, QueryWrapper<Emp> wrapper);
}
public class EmpServiceImpl extends ServiceImpl<IEmpDao, Emp> implements IEmpService {
@Autowired
IEmpDao empDao;//这里报红没事
@Override
public IPage<Emp> queryEmps(IPage<Emp> result, QueryWrapper<Emp> wrapper) {
result = empDao.queryEmps(result, wrapper);
return result;
}
}
示例:
@RequestMapping("qemps")
IPage<Emp> queryEmps(@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "5") int limit){
IPage<Emp> result = new Page<>(page, limit);
QueryWrapper<Emp> wrapper = new QueryWrapper<>();
wrapper.gt("sal", 1000);//查询条件,工资大于1000,其他的可以研究一下,比如eq,le,like
return empService.queryEmps(result, wrapper);
}
以上就是多表关联查询了~~~
以上就是Mybatis-Plus多表关联查询的操作例子的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注亿速云行业资讯频道哦!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://blog.csdn.net/weixin_47261870/article/details/127156740