我在数据库有个create_by字段,存的是操作员的用户id. 所以我的字段注解是这样的:
@TableField(el = "createBy.id")
private User createBy;
然而查询的时候,生成的sql语句仍然是
select ..., create_by AS createBy from ...
最终注入属性失败。
不应该是
create_by AS createBy.id
吗?
Comment From: mzdbxqh
翻了下源码,似乎这个el属性只是在 create_by = #{ew.createBy.id}的时候生效 而select colName是通过遍历反射出来的属性名来组装的,跟这个注解属性没啥关系 所以有啥隐藏的功能可以实现 select create_by as createBy.id 来实现查询结果注入类型为实体的属性么?
Comment From: qmdx
el 设计上主要是为了支持 typeHandler 我们建议多表关联处理写在 xml 中
Comment From: rchlz
如果不是多表关联,只是跟提问者一样的需求,该如何写呢?
Comment From: rchlz
@mzdbxqh 你的问题解决了没有?
Comment From: mzdbxqh
@rchlz 目前应该是不支持的,要用xml
Comment From: rchlz
@mzdbxqh 如果用xml感觉mybatisplus就有点重了。每个方法又得重写sql,回到了sql时代。
我现在的做法是写了一个createById属性,同时把createBy定义为非数据库字段,在set方法对createBy.id赋值。感觉domain写起复杂了些,但起码是不用写大量sql了。
Comment From: jstdoit
+1