Mybatis-plus 排除不必要的字段(源码分析)

本文介绍了在MyBatis中如何排除字段不参与查询的三种方法:使用`static`、`transient`关键字以及`@TableField(exist=false)`注解,并详细分析了源码,揭示了字段筛选的过程。通过源码跟踪,找到了字段是否被包含在SQL查询中的关键判断点,帮助理解其实现原理。
摘要由CSDN通过智能技术生成

1:如何排除

1.1:使用static修饰

    private static String id;

1.2:使用transient修饰

    private transient String id;

1.3:(推荐)使用TableField(exist = false)

    @TableField(exist = false)
    private String id;
exist默认为true

2:源码分析

前言:因为我执行查询命令时,多了一些我不要的并且数据库里没有的字段。

虽然用上面的方式解决了,但是秉承着知其然必要知其所以然的态度,我去跟了一下源码,步骤我也跟着贴一下

先在查询语句处打个断点,发现Sql语句已经存在MappedStatement的sqlSource里了。

 

 那咱们就从MappedStatement入手

首先打个断点,再重启一下工程

通过断点,我们发现,在这一步的时候,tableInfo里就已经筛选出需要查询的字段了

 所以我们主要看initTableInfo这个方法

TableInfo tableInfo = TableInfoHelper.initTableInfo(builderAssistant, modelClass);

 通过上面一步一步的进入,我们终于发现一个符合我们本篇文章主题的方法

 

上下文呼应起来了,哈哈哈,此处的含义是你字段没有用@TableField注解修饰 ,但是你的exist默认为true,所以也会加入到sql字段里。

又有小伙伴要问了,1.3对应的源码有了,但是1.1和1.2对应的源码在哪里呢?

------------------------------------------------------------------

来,咱们接着进入getFieldList这个方法里

  

 1.1和1.2对应的源码也有了

如果该篇文章对你有帮助,请一键三连!谢谢了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hongcj925

谢谢你的支持

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

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

打赏作者

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

抵扣说明:

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

余额充值