方向从一开始就错了,还是执着的去寻找问题的解决方案,简直就是一场重大灾难,但这也是每个修行者的必由之路。这个线上问题,差点让我的心里防线崩溃,苦寻无门,最终得以解决也多亏了身边的各路大佬的群策群力,当然也少不了同事的一番苦情调侃。“一个bug解一天”,还要我怎样,奥力给吧。开始我们的正文吧。
方案一:此放案是我处理这个紧急问题想到的临时方案,虽然方案是low了一点,但总算及时解决了线上问题,用户可以正常使用,也留出了足够的时间让我排查遇到的这个鬼畜一般的问题。那么就说下这个临时的解决方案,我们可以先用驼峰的实体去查询出所有的数据,然后再将驼峰中的属性值一个个赋值到下划线的属性实体中,这样就能取到对象中的值,返回给我的第三方调用,话说我的第三方也是够恶心的,给我的接口中的传参都是下划线分割,着实够恶心的吗,不知道我一直是一个规规矩矩的java小白吗,也是够了。哈哈。
方案二:相对来说就高大上了,这里的主要问题其实就是屏蔽全局的驼峰设置对于我们个别特殊的mapper实体映射的问题,这些下划线属性的命名的实体不能直接接收数据库的字段,相必我们都知道mybatis有俩种方式接收查询结果的数据,resultType和resultMap,解决这个问题,我们可以使用resultMap的方式接收数据,这样就可以屏蔽掉驼峰的影响,接收的数据会按照resultMap中的映射去接收数据,无论你是下划线字段还是驼峰字段还是其它乱七八糟的命名方式,其都可以映射,是不是很强大呢。哈哈,也怪小编自己比较懒,手动配置这些映射觉得特别麻烦,总是使用别名加resultType的方式接收数据,几乎不用resultMap,今天才体会到了其异乎强大的功能,存在即是合理的,真的是这个样子。感叹这些设计的精妙之处之时,也被这些作者的才华深深的折服了。
好了,今天就码到这里了,虽然是比较水的一篇文章,但是也是希望那些初学者不要再犯和我一样的错误,别被身边的同事调侃,一个bug解一天,真的很扎心啊。