您好,登录后才能下订单哦!
本篇文章和大家了解一下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多表关联查询的操作例子的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注亿速云行业资讯频道哦!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。