Mybatis-Plus原生不支持关联查询,你这个实体类中的deptno的数据类型应该为int或String类型,而如果要在这个实体类上加上部门的话应写成:
@TableField(exist = false)
private Department dept;
在Mapper文件中自定义好关联查询的语句就可以了。
deptno是javabean对应的变量,是一个对象,这个不行哦。
你数据库里不应该是通过业务主键,deptNo作为关联吗,所以这个地方应该是String或者Integer啊,insert操作哪来的多对一,你这个涉及两张表的操作了,应该在业务代码里分离成两个Mapper文件进行操作了,mybatisplus是不支持原生方法操作两张表的
新增或修改的时候,应该是在员工表里添加所属部门的id,查询的时候应该是查两次,查询员工,然后取出部门id集合,查询部门名称然后补充到最终返回的VO对象里的部门名称,DO对象存String或Long型的id,VO对象里存名称
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
你应该是在员工实体类中,将外键字段部门ID,直接改成了部门实体。
MP在做save时不会识别这个类型,所以
在员工实体类中把所有属性都按表的字段正常写,再额外加一个部门实体属性,加上@TableFiled(exist=false)标明不是数据库字段
@Data
class Dept{
private Integer deptNo;
private String deptName
}
@Data
class Emp{
private Integer id;
private String name;
private Integer deptNo;
@TableField(exist=false)
private Dept dept;
}
这样做添加就没问题了,至于查询,可以把sql写成
select emp.*,dept.dept_no as 'dept.deptNo',dept_name as 'dept.deptName' from emp , dept where emp.dept_no=dept.dept_no
因为这个字段没有setget方法