记一次debug mybatis框架代码
在培训的过程中,我要求学员们平时遇到问题,可以发邮件给我,我会通过邮件的方式解答。之所以会使用邮件,是因为邮件可以保存记录,这样有助于学员以后的翻看和复习。就在上周末,有学员发邮件问了个关于mybatis参数的问题,我觉得很有代表性,就在今天的课上给学员演示了下如何解决疑难问题。
情况是这样的,在xml文件中定义了查询语句,然后在sql中使用了两个参数,而parameterType定义为java.lang.String类型的,程序竟然也能跑通,不报异常。这就奇怪了,明明我定义的入参是string类型的,但是sql里用了两个参数,没道理呀,至少入参是个Map或者自定义类型才行啊。于是到网上问度娘,估计也没找到靠谱的答 案,于是就发邮件问我了。我看到这个问题后,一开始我也没太注意,觉得应该好解决,但是当我到网上查资料的时候,我发现没有我想要的答 案,也许是我搜索技术太渣吧。后来,我就debug mybatis的源码,才找到问题的真正原因。
后来,我就想把这个解决问题的方法告诉学员,于是就在今天给学员们演示了一下如何解决疑难问题。我说的疑难问题,是查找资料后也没有得到解决的问题。如果是这样,只能是自己动手,丰衣足食了,为了搞清楚mybatis的传参问题,不得不debug源代码,一步步的执行下去,看看参数从Mapper到statement是怎么样封装解析的,经过多次的debug,大致上了解了mybatis的参数解析,虽然在很多细节上没有深研究,但是大体上的过程,经过debug后,会有一个整体的流程,这对于我们掌握mybatis是很有必要的。一般对于我们初学者,很少会去看源代码,除非遇到了问题,才有意愿去翻看源代码,这次参数的问题,我们就专门盯着参数的流程一步步的走下去,其他的旁枝别叶我们一概跳过,这就大大减少了看源代码的负担,毕竟方法一层层的往下延伸,此时的方法栈已经很深了,一旦分心,就会前功尽弃,所以,在debug的时候,一定要清楚你关心的是哪个流程,这样才能更有效的得到你想要的东西。当然,debug的时候时常迷途,不要紧,一次不行两次,两次不行三次,多试几次,就会清楚的。
通过这次的debug mybatis源代码,我想告诉学员的一个解决问题的方法,先到网上找资料,如果没有得到解决,自己就要翻看源代码debug,想要研究框架, 好有效的方式是debug,一步步的往下走,就能够摸清楚框架的流程和具体细节,就能够清楚框架底层的本质。大牛们也是这样学习的,他们也是在debug的过程中迅速掌握一门框架原理的。但对于我们初学者,重要的是先要会使用,其次再是研究源代码,要分阶段,我们这个阶段就是要求会使用即可,后面的时间还很长,在熟练框架的同时,若想进一步提高,就得研究源代码,学习源代码是提高技能的有效手段之一。
厚学推荐学校
网上报名
推荐学校
更多>>新闻资讯
更多>>-
转行Java自学还是培训?
2017-06-08
-
欢乐颂|90后程序员在魔都买房,可能吗?
2017-06-13
-
关于讲师,你们想要了解的都在这里
2017-06-14
-
我们反对你一片空白直接报名参加培训
2017-06-14
-
大猿软件,我们有什么不一样?
2017-06-14