00:00
好来,接下来的话,我们就按照我们刚刚打好的这个断点呢,来我们来具体的去看一下,它到底是怎么把我们的SQ语句给它构造出来的,好来我们还是回到我们这个测试方法里面,我们来运行一下,好第八个走起来。行,那么他就诶如我们首愿啊,停到了我们刚刚打断点的这个位置,那么首先呢,我们先来分析一下这个方法,呃,在当前的这个方法里面呢,啊,他帮我们传进来的,诶第一个诶BA这个应该代表的是是不是一个批量操作啊,当然现在我们不是,我们只是一个简单的删除操作,好这个是我们当前操作的这个接口对象,然后呢,啊,这个是我们当前操作的这个model啊,就是我们这个模型啊,实体类对象,然后后面这个table info呢,诶,它是一个数据库表的反射信息啊,就是我们可以通过这个对象呢,诶来拿到我们这个表相关的一些信息,你比如说好,我们看一下它里面有我们这个。哎,表的名字啊,诶你看这个table name啊等等一些啊,它是可以获取得到的,以及我们的啊,Column呀,等等等等一些啊都是可以拿得到的,好然后呢,注意呃,因为当前我们正在注入的呢,是一个delete啊,就是我们在删除了这个方法上面啊,正在注入这个sol句,所以说呢,一进来以后呢,他先通过这个circle method,然后呢点delete by ID啊我们来看一下这个家伙,好circle method.delete by ID。
01:23
好,那么这个呢,它是一个枚举对象,然后呢,这里面有一个delete by ID,我们来分析一下啊,有一个K啊叫做delete by ID,后面呢是一个简单的描述,再来往后看的话呢,这是一个script,诶大家来看这个应该就是我们将来要构造sol语句的一个模板了,好,他通过这个script这个标签呢,帮我们括起来了这样的一个诶模板搜口语句,好,那么我们来接着往后看。那么拿到它以后呢,我们来代码往下走,好这个里面呢,就是我们拿到的,诶这个枚举对象,好接下来呢,它通过我们这个数据库表的哎信息呢,然后呢,获取到我们当前的key property啊,那应该是获取我们这个组件了,好,往下走一下拿到的就是我们的ID,好这是没问题的,然后呢,他一判断你是不是批量操作呢,那当然不是了,好,我们接着再来往下走,好就来到这,来到这以后呢,大家注意啊,它调用了一个字符串里面的form方法,好然后呢,啊,拿到我们so method里面的这个sol语句啊,那么这个sol语句的话呢,应该就是我们刚刚看到的那个script,哎,括起来的啊这个字符串啊,就是它他把这个拿到,然后呢,又把我们的表名诶传进去,又把我们的列名传进去,诶又把我们的这个组件列的啊也给大家传进去,那么其实大家注意这个get key column,我们来看一下是什么啊,它其实就是table里面的get key column,我们看一下。
02:53
P column不就是ID吗?是吧?诶这个table name呢啊,那不就是我们的啊TBL来我们看一下啊,Table name就是我们的,诶当前这个操作的这个表,所以说呢,大家注意他把这个搜口语句诶传进去。
03:09
好,我们来。拖一下啊,他把这个搜口语句好传到这个方法里面,并且呢,诶把这两个值呢,哎把这几个值呢,也给它传进去了,那么其实将来这个方法呢,诶它就能把我们的这个表明呢,诶给你处理到这儿是吧?诶把剩下的这两个值呢,分别给你什么做一个处理,那么就能对应到诶我们这个soql语句里面这个百分号S上面,好那么这个字符串的这个处理过程呢,就不再带着大家具体去看了,好反正我们最终处理完成以后,我们拿到一条so考语句,就是我们最终能真正去执行的诶一条so考语句了。好,那么拿到这条circle句呢,接下来呢,他用到一个language driverva啊,那么这个呢,其实也是我们啊比较重要的一个对象啊,是我们这个语言驱动啊一个对象,他帮我们去构造一个SS,那么其实这个SOS呢。
04:04
诶,就是我们搜口语句的一个这个啊,算是处理搜Q语句的一个对象了啊,他把我们这个搜口语句传进去,然后呢,把我们当前的这个model类型啊传进去,把我们的注意configuration这个就是我们比较重要的那个对象啊,Configuration也传进去,传进去以后呢,诶拿到一个so source对象,好,我们来看一下代码往下走。好,拿到这个so source以后呢,我们看看它就是一个诶static so source就是我们的静态so source啊,因为我们当前不是一个动态so,然后这里面有我们的诶搜口语句,然后呢,还有一些什么其他的信息啊,我们就不再带着大家挨个去看了。好啊,然后接下来呢,大家注意,关键的地方就来了,拿到so source以后呢,我们就去调用这个A啊,Delete map statement,把我们相关的数据呢,给它传进去,好,这个地方我们传了一个method get method,那么这个get method的话,就是我们当前正在诶要去调用的这个方法的这个名字啊,就是delete版ID,好,那我们接着再来往后走。
05:08
好,这个我们就断点直接放行,诶那就来到了我们这个ad,诶,Delete map的statement这个位置,然后呢,把这些数据传进来以后呢,紧接着呢,它又调用到了我们的ad map statement这个方法,还是把这些数据呢,诶有的就给你传上具体的值,没有的诶就给你传一个呢,那么我们能看到的是这个so command啊大家需要注意,这是我们搜语句的类型,它就是一个删除啊好,然后呢,又传到我们的ad map statement,我们断点呢,再来往后走。好,那么其实就来到了我们这个方法里面了,来到这个方法里面呢,诶,他拿到我们这个statement name啊,这个statement name呢,就是我们的。呃,接口的这个全名字啊,然后呢,再加上他的这个ID啊,我们来可以看一下往下走,好就是我们的诶接口的名字加上我们方法的名字,这个ID呢,就是我们当前调用的这个方当前正在诶注五的这个方法的名字,好然后呢,判断一下是不是已经诶被这个呃添加成map的statement了,那我们来往下找。
06:13
好,它是不满足的,那么接下来呢,就来做一些缓存的处理,好说你这个是不是查询啊,啊,那么这当然不是了啊,我们就往下走,好直接来到这,那么它又调用了一个叫做a acent这个对象,那么这个对象呢,也是我们买里面比较重要的一个对象了,好,它叫做map build啊,这个assignant是吧?好,那么这个对象呢,它是用于缓存我们的啊,用于做缓存啊,啊我们这个搜Q参数啊,还有这个查询返回的结果及处理等等一些啊,都是通过它来做的,好那么他去调用了一个a DD map的statement对象。好来,我们先把这个对象呢给大家列出来啊,稍微解释一下,因为这个好多同学呢,不知道他是干嘛的啊,我们来列到这。
07:01
好在这个本质里面的话呢,我们看到了一些对象啊,我们给大家去说一下,首先呢,我们看到了一个这个so method。好,我们先列到这一会呢,再来给大家做一个具体的解释啊method,然后呢,还比较重要的一个呢,就是我们的。啊,这个叫做SOS好啊还有一个呢,应该是我们这个table info啊,我们写到这个上面,好table info,然后呢,还有一个这个SOS,那么啊,我们再来看一下啊,在我们这个调用之前啊,就是在这个方法之前。好,应该在这个位置啊。好,那么基本上呢,就这这这几个对象了啊好啊,然后呢,再来到我们这里面的话呢,诶,我们看到了一个这个build sentence啊,这个对象我们也来给他拿出来,好,我们放到这个位置。好,我们直接去写成具体的类型吧,它叫做这个。
08:01
好,A sentence,好,那么一会的话呢,我们啊给大家来具体解释一下它们这个的一含义,好,那么接着往后看,那么它又调用了一个ad map的statement,那么我们又把这些相关的数据呢,都给他传进去了,传进来以后呢,我们再进去看一下。好,来到这个地方以后呢,大家注意了啊,我们呃,拿到它会返回一个map的statement啊,这个其实无所谓了,我们主要是看这个方法里面的处理,在这个方法里面呢,有一个非常重要的一行代码,就是最终呢,诶有一个configuration,大家看到没有好代码的来到这。好,这个configuration呢,他去ad map的statement,把我们当前的这个statement对象呢,诶就是我们的,大家来看一下,就是我们当前的这个,诶,Statement大家往下看啊,这里面呢,有一个非常重要的东西,就是我们的,诶employee map,它里面呢,有一个so command tap是我们的删除,然后有一个搜source,诶你看就是我们的这个搜句了。
09:04
好,就是这个了。OK,好,那么他把这个家伙呢,就加到了我们这个全局的诶conig里面了,好,那么其实到这个位置的话呢,我们就已经知道了它这个搜口语句到底是怎么注入进来的,好啊,那么最终的话呢,把这个搜口语句注入到我们这个configuration里面以后呢,诶,我们再回到我们的啊这个测试方法,这好我们断点呢,让它直接放行。好,我们再放心好,因为这是有好多好多方法要去处理的啊,所以说呢,诶,它会走各种各样啊,就是走多次啊这些这个处理过程,因为我们知道在这个base map里面呢啊,我们有各种各样的方法,刚刚呢,我们只是看了其中的一个啊这剩下的这些呢,它都要进行处理,那么这些呢啊,我就不再带着大家挨个去看了啊,我们就啊直接啊停掉吧。好,停掉以后呢,我们再重新来一次啊,那么重新来的话呢,这些断电呢,我们就不需要了啊,我们就把它都去掉了啊,那么去掉这些断电以后呢,但是呢,我们在这个TS的MP这个位置呢,我们还是要再打上断点。
10:08
好,我们再来执行一次。那么现在我们知道了,他帮我们注入的这个so语句呢,其实就在我们诶一开始分析的这个现象里面,在它里面呢,诶有一个circle session对象,而在这个circle session里面呢,有一个circle session factory,而在这里面呢,有一个configuration,在这个configuration里面呢,诶就有一个叫做map的statement。好,然后在这个map的statement里面呢,诶,它就保存了我每一个方法,比如说我们来啊,大概的去找一下我们刚刚看到的那个delete啊。好,这个东西特别多啊,我们啊慢慢的去找一下它。诶。还没找到啊。
11:02
哈,Delete by map了啊,应该快了。诶,还真不好找是吧。好,哎,终于找到了啊,那么我们就能看到,你看刚刚把我们注入进来这个delete,哎,By ID有。还得重新来一下啊。好在这个factor里面有一个configuration,再展开呢,有一个啊,Map的statement啊,我们来找到他,好,这里面大概是多少个来着,30几个吧。好,就在这个地方,大家来看一下,那么这就是我们刚刚注入进来的那个map的statement,然后展开的话呢,诶,这是我们的key,下面就是我们的map的statement,那么它里面的话就有我们具体的这个,好,我们来看到它的这个。
12:00
好,我们把这个拉大一点,好大家来看一下,在这个里面呢,有一个啊。诶S在这个so ss里面呢,我们就能看到我们这条so去,好所以说呢,大家注意将来你再去调用这个方法的时候呢,那么它其实诶就会执行到我们的这一条烧烤去,那么这样的话呢,诶其实我们一开始给大家提出来的这个问题呢,诶我们就已经得到解决了,好所以说呢,这就是我们。啊,这个soq注入啊,就是我们这个启动来及注入搜口的这个原理分析好,那么最后的话呢,我们再来花一点点时间啊,把这个呢给大家稍微解释一下,我们这个so method呢,它是一个这个枚举对象啊,就是大家下去以后在看的时候呢,你可以重点关心一下这么几个对象,好我们还是看到它啊有一个so method好,这是一个枚举对象,然后呢,呃,这是我们买be plus啊,它支持的这个so方法啊。好,就是我们这个MP啊支持的搜后方法,好,说白了呢,哎,这里面就是定义了一些我们这个模板的搜语句啊,你的每一个操作,将来要生成什么样的一条搜语句呢?诶其实都是到这里面,诶通过这个模板呢,再结合上你具体的数据啊,来帮你做生成的,好那么这个table info呢,也需要跟大家去说一下啊,我们来找了一下,好table info对象啊,我们找到它。
13:24
啊,这波。哎,哪个呀。啊,应该是这个吧。好,Table in,这是我们数据库表的,哎,反射信息对象啊。好,就是可以什么可以获取到啊,获取到我们这个数据库表相关的信息啊,相关的信息,行还有一个这个搜source对象啊,那么这句话就是我们这个诶搜口语句的这个对象了啊搜啊好翻译过来就是这个搜口语句原对象啊,搜口语句啊处理对象吧。好,So,后语句这个处理对象啊,大概知道一下就行了,然后再来说一下这个map build a center啊,这个是我们最后一步过程中,我们看到的是通过它呢,哎,把我们这个map的statement呢,添加到我们这个configuration里面啊,所以说呢,它呢主要是用于这个啊,用于啊做我们这个。
14:21
哎,用于啊缓存呐,哎,或者我们这个SQL参数的处理啊,啊,以及我们这个啊查询返回结果及处理啊等啊就是呃,做这些事的,如果大家对他不了解的话呢,诶,那么你就需要回到买贝蒂斯里面呢,好好的去诶研究一下这个对象,好最后的话大家注意啊,我们是给大家说一下通过它啊就通过它。好,通过它呢。好将我们的这个啊,Map statement,好将我们的每一个啊,好每一个map的statement呢,诶添加到我们的。
15:06
哎,添加到啊,我们的这个啊。Configuration啊。好,Configuration中的这个。好麦中的啊,就填到了这个里面的好啊,然后呢,呃,最后呢,我们再来给大家这个把这个最后的这个结果哈,我们再来给大家去截出来看一下啊,就在这里面呢啊,我们把这个呢给大家看到啊,它里面有一个。Session啊,有一个session factory有一个configuration。在configuration里面呢,我们有一个这个呃,Map的啊,这个特别大是吧。好,我们先把这部分给它截出来吧。好,先看到这个地方啊,来,我们先给它放到这啊。
16:04
好,就是比较关键的几个步骤啊,大家可以下去以后呢,自己去查看一下,好拿到以后呢,我们再来往后分析啊。Configuration,然后在这个configuration里面的话呢,我们主要就是看谁的呢,就去看这个map的啊,然后呢,这里面的东西呢,其实就特别多了啊,我们就大概的截一下就可以了。好,然后呢,我们再来展开啊,具体的一个啊,这个再让让大家再去看一下。哎哟,这个每次都得重新打开一次啊。好,找到我们的map statement。好,我们就打开具体的一个吧,比如说找到我们的啊。我们分析的那个啊,叫什么来着,好就他吧。
17:02
好,Delete by ID,我们来把它展开啊,展开的话我们就能看到具体的一些东西啊。好吧,哎,就是把这个截出来啊。好,把这个放到这儿啊。行啊,那我们这个,呃,原理这个分析呢,哎,我们就告一段落啊。
我来说两句