Mybatis-Plus多表关联查询的使用案例解析

 更新时间:2023年05月13日 15:13:46   作者:头不秃代码不止  
这篇文章主要介绍了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程序中怎么写就比较复杂了。

 首先配置pom.xml配置文件

1.pojo包中有dept和emp两个实例类

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对象,这个对象包含了每个员工对应部门的信息。

2.在Emp的mapper映射文件(.xml)中的mapper之间添加如下代码

<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);

3.在Dept的mapper映射文件(.xml)中的mapper之间添加如下代码

<select id="selectById" resultType="com.nb.spring_boot.api.pojo.Dept">
        select * from dept where deptno=#{deptno}
</select>

4.在IDeptDao接口中代码如下

public interface IDeptDao extends BaseMapper<Dept> {
    Dept selectById(Integer deptno);
}

5.Emp的dao接口中和

public interface IEmpDao extends BaseMapper<Emp> {
    IPage<Emp> queryEmps(IPage<Emp> page,@Param(Constants.WRAPPER) Wrapper<Emp> wrapper);
}

6.IEmpService接口中

public interface IEmpService extends IService<Emp> {
    IPage<Emp> queryEmps(IPage<Emp> result, QueryWrapper<Emp> wrapper);
}

7.EmpserviceIml类中

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;
    }
}

8.接下来就是你自己在controller层写方法

示例:

@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多表关联查询的使用案例解析的文章就介绍到这了,更多相关Mybatis-Plus多表关联查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Maven引入本地Jar包并打包进War包中的方法

    Maven引入本地Jar包并打包进War包中的方法

    本篇文章主要介绍了Maven引入本地Jar包并打包进War包中的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 详解Java中native关键字

    详解Java中native关键字

    这篇文章主要为大家详细介绍了Java中native关键字,什么是Native Method
    2016-02-02
  • IDEA配置并运行Scala项目的实现步骤

    IDEA配置并运行Scala项目的实现步骤

    本文主要介绍了IDEA配置并运行Scala项目的实现步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-06-06
  • spring的Cache注解和redis的区别说明

    spring的Cache注解和redis的区别说明

    这篇文章主要介绍了spring的Cache注解和redis的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java启动参数从基础配置到高级调优(最新整理)

    Java启动参数从基础配置到高级调优(最新整理)

    文章系统讲解Java启动参数分类、内存管理配置、GC调优策略及生产环境实践,重点涵盖标准/非标准参数、堆/元空间/直接内存设置、G1/Parallel等回收器选择,并提供压缩指针、容器化部署等优化建议,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • Java Optional介绍和用法示例解析

    Java Optional介绍和用法示例解析

    Java 的 Optional是 Java 8 引入的一个容器类,旨在更优雅地处理可能为 null的值,避免显式的 null检查和空指针异常(NullPointerException),这篇文章给大家介绍Java Optional介绍和用法示例解析,感兴趣的朋友一起看看吧
    2025-04-04
  • Java中Record的应用小结

    Java中Record的应用小结

    Java Record是Java 14引入的不可变数据载体,能自动生成模板代码,下面就来介绍一下Java中Record的应用,感兴趣的可以了解一下
    2025-08-08
  • Java中基于Shiro,JWT实现微信小程序登录完整例子及实现过程

    Java中基于Shiro,JWT实现微信小程序登录完整例子及实现过程

    这篇文章主要介绍了Java中基于Shiro,JWT实现微信小程序登录完整例子 ,实现了小程序的自定义登陆,将自定义登陆态token返回给小程序作为登陆凭证。需要的朋友可以参考下
    2018-11-11
  • Java16新特性record类使用细节示例详解

    Java16新特性record类使用细节示例详解

    这篇文章主要为大家介绍了Java16新特性record类使用细节示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Java 快速排序(QuickSort)原理及实现代码

    Java 快速排序(QuickSort)原理及实现代码

    这篇文章主要介绍了Java 快速排序(QuickSort)原理及实现代码,有需要的朋友可以参考一下
    2014-01-01

最新评论