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对应的源码也有了
如果该篇文章对你有帮助,请一键三连!谢谢了