【日常经验】mybstis使用Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘remark1‘ in ‘field list‘

在这里插入图片描述

如果我写成这样,那mybatisPlus解析的查询结果列是依赖于前面的返回实体PO呢 还是依赖于入参中的实体PO呢 ?

分析:MyBatis-Plus 解析查询结果列依赖返回实体 PO 还是入参实体 PO。首先,MyBatis-Plus
查询结果映射主要看返回的实体类。执行查询时,会根据返回的实体类字段,结合 @TableField
等注解,确定数据库列映射。入参主要用于条件构造,比如查询条件,不影响结果列解析。例如,返回的 PO
有哪些字段,就按这些字段去映射结果集。入参是查询条件,和结果映射无关。所以,总结:依赖返回的实体 PO 来解析结果列

MyBatis-Plus解析查询结果列 完全依赖于方法定义的返回实体类(即 List<SysAccountPO> 中的 SysAccountPO,与入参中的实体类(SysAccountReqPO)无关。具体逻辑如下:

1. 结果映射的核心依据

  • 返回实体类的字段:MyBatis-Plus 会扫描返回实体类(如 SysAccountPO)的字段,结合 @TableField 等注解,将数据库查询结果列映射到该实体类的字段上。例如:
    • SysAccountPO 中有 @TableField("user_name") private String userName;,则 MyBatis-Plus 会将数据库中 user_name 列的值映射到 userName 字段。
  • 入参的作用:入参(如 SysAccountReqPO)仅用于拼接查询条件(如 WHERE 条件),不参与结果列的映射。它决定“查什么数据”,但不决定“结果如何映射”。

2. 执行流程示例

  1. 解析返回实体:MyBatis-Plus 先分析 SysAccountPO 的字段,确定需要映射的数据库列(如 iduser_name 等)。
  2. 生成查询 SQL:结合入参条件(如 SysAccountReqPO 中的查询参数),生成最终的查询 SQL(如 SELECT id, user_name... FROM sys_account WHERE ...)。
  3. 结果映射:执行 SQL 后,根据 SysAccountPO 的字段定义,将查询结果填充到 SysAccountPO 实例中,最终返回 List<SysAccountPO>

简言之,返回实体类是结果映射的唯一依据,入参仅用于查询条件,两者职责完全分离。

所以你在即使在入参的PO中添加了一个表中没有的属性,那也是不营业查询的结果列的,也就是不会报上面的错误,只有你在返回的结果对象中加上了不对应的字段,此时才会报列不存在的错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执键行天涯、

码你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值