MGB的生成代码解析

@

问题描述

文字描述

问题是在我刚刚学习MyBatis逆向工程时出现的,我发现使用Example是可以创建两个Criteria对象,并且两个对象也都可以添加条件,但是在运行过程中只会执行第一次创建的Criteria对象中的条件,我就在想这到底是是为什么,于是乎就有了这篇文章

图片描述

在这里插入图片描述在这里插入图片描述
运行结果可以看到只执行了第一个条件

问题解决

一、关于问题的解决思路

有了上述的问题后,我便有了大体的解决方法,那就是看看它到底是怎么运行的不就好了吗

二、源码的解析

有了思路后我就去查看了example的源码,发现了执行路线如下图所示

0,运行步骤解析

在这里插入图片描述

1,创建Example对象

在这里插入图片描述在这里插入图片描述
根据xml文件的查看,可以看出上边创造的集合就是用来存储条件的

2,创建criteria对象

在这里插入图片描述

3,加入条件

在这里插入图片描述在这里插入图片描述
注意:第二张图中执行add方法的并不是Criteria对象,而是一个存储Criteria对象的集合,此集合为Criteria的父类构造方法创建。
我们可以通过xml文件可以了解到Criteria集合与oredCriteria集合分别是用来干什么的。
在这里插入图片描述

4、创建第二个Criteria对象

在这里插入图片描述

5、加入条件

此处与第三步相同

6、总结

我们经过上述步骤的研究已经基本解决了最开始的疑惑,原来在设定条件时,逆向工程会创建两个集合,一个用于存储条件,一个用于存储Criteria对象,存储Criteria对象的只能存储第一个对象,想要存储第二个对象就必须调用or方法,让两个存储了条件的对象做or判断才行。

欢迎关注我的微信公众号,让我们一同进步

在这里插入图片描述

posted @ 2019-10-08 09:58  爱跑步的大胖子  阅读(291)  评论(0编辑  收藏  举报