我在数据库有个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