Mybatis-Plus多表关联查询的使用

项目的目录结构:

有以下四个包:

Mybatis-Plus多表关联查询的使用_第1张图片

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之间添加如下代码


    
        
    
    

resultMap里的id属性(empMapper)里面可以随便写一个变量名,可以不叫empMapper,select里的selectById在IDeptDao接口中要有该方法

Dept selectById(Integer deptno);

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

4.在IDeptDao接口中代码如下

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

5.Emp的dao接口中和

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

6.IEmpService接口中

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

7.EmpserviceIml类中

public class EmpServiceImpl extends ServiceImpl implements IEmpService {
    @Autowired
    IEmpDao empDao;//这里报红没事
    @Override
    public IPage queryEmps(IPage result, QueryWrapper wrapper) {
        result = empDao.queryEmps(result, wrapper);
        return result;
    }
}

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

示例:

@RequestMapping("qemps")
IPage queryEmps(@RequestParam(defaultValue = "1") int page,
                     @RequestParam(defaultValue = "5") int  limit){
    IPage result = new Page<>(page, limit);
    QueryWrapper wrapper = new QueryWrapper<>();
    wrapper.gt("sal", 1000);//查询条件,工资大于1000,其他的可以研究一下,比如eq,le,like
    return empService.queryEmps(result, wrapper);
}

以上就是多表关联查询了~~~

你可能感兴趣的:(mybatis-plus,java)