00:00
好,下边咱们来看一下通用map的原理,我们把看原理所需要用到的第八个断点哈,都导出到这个BKPT文件里面了,一会儿呢,咱们就不带着大家呢去找这个断点了,因为找这个断点哈,这个过程是很麻烦,你看着别人找呢,其实你跟着一会儿一会儿就乱套了啊,所以找断点这个过程哈,需要大家自己呢亲自去做,哎,咱们大家回头你自己去,如果想看的话呢,你也可以去导我这个断点这个文件,嗯。这样的话,我们有了现成的断点哈,我们再去看的话,就能够思路比较清晰,哎,咱们能够比较直接的直奔主题,然后呢,咱们测试的工程呢,做了一个很简单的操作哈,就是咱们通用map的这样一个环境,然后呢,诶,我们这回呢,用的是department啊这样一个视界类,去调了一个select这样一个方法。哎,就是这样一个效果,呃,那下面呢,咱们是把这个断点文件给导进来,在break points这个里边呢,去导一个我们这个文件,我这儿已经有这个路径了哈点finish。
01:11
这个断点是我提前已经准备好的,然后呢,有两个地方哈,我们加了两个条件,哎,就是这个断点和这个断点哈,加了一定的这个条件,呃,为什么要加条件呢?就是这两个断点呢,是属于很多操作都需要从这过,但是呢,我们只关心其中一部分啊呃,你看这个地方呢,我们只关心我们department member just select all这个方法,哎,是这个条件,然后在这呢,我们只关心department member啊,这其实是一个变的ID,我们避免这个断点呢,呃,频繁的啊,重复的没有意义的,从这儿老师去过,我们老师一步一步的老师去点这个呢,很麻烦,哎,下面呢,咱们就跑一下咱们这个方法哈,咱们看一下这个通用map呢,它执行的时候是怎么一个过程,第八个s unit test。
02:05
诶首先呢,在这儿大家看哈,这是做的是一个do sc这样一个操作,这个对应什么呢?这个对应我们在。配置文件里面配的map sc confi。诶,大家看这map scan confi,我们在这儿不是要扫描这个包吗?诶这个时候呢,我们现在做的呀,就是这个扫描包的这样一个操作啊杜盖。然后呢,我们现在这个类呢,你看哈,就是class pass map scanner,哎,就是这样,然后呢,我们断点再往后走下一步哈,看看它下边要去干什么呢?在这儿呢,要去创建这个B,我们这儿呢,就是刚才说的,因为我们这儿加了条件了,这个断点加条件了,它创建别的B哈,我们这就不停了,这只是我们创建department map这个病的时候呢才停啊,呃,别的创建别的病的时候停了,我们看也没有意义,但是呢,虽然没有停,但是大家要知道哈,那它还是LC容器启动的时候,我们配了很多东西啊,有很多并要创建。
03:11
好,再下一步,这一步是干嘛呢?你看set SQL source,所以说从这一步开始哈,我们就需要去准备SQL语句了,所以说这个我们在通用map环境下,老说这个自动生成SQL语句哈,这个SQL语句是什么时候生成的呢?是我们项目初始化的时候,并不是你真正去调那个map方法的时候去创建,呃,才生成SQL语句的哈,其实是我们初始化的时候。哎,再下一步你看,呃,现在是在哪的呢?现在是这个类哈,是我们贝斯。Select select provider这样一个类,这个类里边呢,你看select这个方法去做这个生成SQL语句的这个事。啊,这一部分去生成测回去,嗯,然后呢。
04:01
说这个我们从哪能看到base select provider呢?咱们去找一下哈,看一下我们select这个方法,你看在它的type,这就是呃,在它的方法上面有一个注解select provider,然后呢,它的type等于base select provider,嗯,这个东西呢,我们点过来就是它,哎现在呢,我们进来的就是它的这个select or这个方法中间这儿呢,就是一步一步呢去拼这个词后语句,哎这个呢,很像我们写的那个扩展,扩展通用map那一部分啊,我们写的东西呢,跟这个诶大致上非常的类似,做的事儿呢,也其实意思也都是类似的,在这儿呢,去生成这个SQL语句,这个字符串呢,给它准备好,诶再下一步呢。嗯,哎,我们是停到这了哈,这你看这是什么呀,这是一个构造器,有一个static s source这么一个类哈,去创建它的对象,然后呢,把生成的SQL语句,你看这边我们生成的SQ语句哈,把生成的SQL语句呢,赋值给类似点SQL就是这个类里边有这么一个属性赋值给它,诶一会儿呢,我们还会去从这个类里边哈,去或访问这个属性,把SQL语句给找出来。
05:17
诶。然后呢?在这儿呢,你看我们调的是我们default circle session啊这个类,其实呢,它实现的是我们嗯circle session这个接口,我们老说用circle session啊,其实我们用的circle session是一个接口,真正的时间内呢是default circle session,然后呢,我们现在要做的事呢,啊是调的是default circle session它的select list这个方法,哎,现在是到这了,嗯,再然后呢,在这哈,Get棒的circle,就把刚才放到static circle source的那个方法呢,给它取出来那个circle语句哈,你看这不是static circle,诶然后他他在这儿呢,又尿了一个棒的circle,然后呢,把我们circle呢给传起来,这个circle是哪来的呢?
06:08
这个搜Q呢,就是当前的这个它的一个创业变量啊,也就是刚才我们就是把搜Q语句生成好的那个搜串呢,给存到这儿了,现在呢,从这儿取出来创建这个对象,然后呢从这返回。然后呢,到这儿哈,我们真正去做这个查询的时候,是使用prepared statement,这就是真真正正我们GDP的操作了,然后呢叫XQ的,最后呢再解析结果集,所以说呢,我们通用map呢,它的底层呢是买杯,买杯D呢,它的底层呢是我们JDBC。哎,到这儿的话呢,我们后边就,哎没有什么需要看的了,也就是说整个这个过程哈,我们是看的,给大家看了一些这个要点啊,有一些关键点呢,我们能反映本质问题的,我们带着大家看了一下,中间呢,肯定还有大量的这个调用啊,我们没有一步一步去看,诶这个大家自己感兴趣的话呢,你想了解通用麦它工作的原理哈,你也可以呃,尝试着自己去找,找一找这个断点。
我来说两句