00:00
那首先呢,我们来看一下昨天咱们同学晚上遇到的一个问题啊,这问题呢,就是咱们昨天最后写的这样的一个测试用例,那这个测试用例呢,是基于一个分页的。好,所以呢,在这个例子当中,我们创建了一个配置对象,然后接下来呢,我们自定义了一个map层的一个方法,叫select配置by age,那这个map层的方法呢,实际上并不是base map给我们提供的,是我们自己通过SQL语句配置出来的,那么这个SQL语句呢,在这个位置,好,那这个SQL语句里面呢,调用了一个。啊,相当于子子语句哈,这个子语句呢,是被定义在这个位置的,那这个子语句里面呢,啊,列出了我们当前的数据库列表当中的所有的这样的一个字段,好,然后接下来呢,我们在。咱们的这个里面呢,对呃,数据呢,就进行了一个查询,那我们把测试呢,写到了这个地方,对不对啊,写到这个地方之后呢,咱们,嗯。
01:07
对这个测试用例进行测试,就得到了下面的这个结果,那这个结果呢,嗯。乍一看好像没有什么问题啊,但是仔细分析呢,确实是有一些问题的,那么他的问题体现在哪呢?大家来看,首先查询肯定是没有任何问题的,因为我们通过查询呢,在日志当中输出了我们查询得到的结果,那这个查询得到的结果呢,注意是二维表的结果啊,它和我们的。应用程序当中的实体对象,也就是那个user对象是没有任何关系的啊,那到目前为止呢,还没有做一个实体对象的封装好,那么紧接着呢,买be plus帮助我们呢,对实体对象进行了封装,他帮助我们把这个实体对象封装到了这个里面,是不是好封装的时候呢,就出现了问题,那么出现了什么问题呢?大家可能会发现我们在做数据库查询的时候呀,数据库里面的列呢,它叫UID。
02:07
Username age啊等等,它是这样的一个名字,而我们的实体类当中的属性名呢,它是ID name,对吧?啊,产生这个问题的原因呢,其实就是昨天我们在做其他的测试的时候,在做其他的注解讲解的时候,把我们的数据库表改的乱七八糟了,是不是?所以呢,和我们之前已经定义好的这个。列的名字呢,就产生了不一致的问题啊,然后呢,那我们数据库表当中的这个列呢,叫UID,但是我们实体类当中的这个属性的名字呢,它实际上叫ID,那我们数据库表当中的叫username,我们实体类当中的属性的名字呢,叫nameme,对不对?同样这三个字段在我们的实体类当中也都有一个不一样的名字啊,所以呢,我们要做映射,那在这个里面呢,做映射有两种方案,不知道大家还记不记得,实际上呢,你们应该在之前的买贝斯的课程当中啊接触过,那么其中第一种方案呢,就是在这个地方不写result type了啊,取而代之的是什么呀?
03:14
Result。Map还记得吧?然后比如说我们写一个my user。可以吧,啊,然后上面这个地方呢,你是不是可以定义一个自己的result map呀,然后把嗯,那当然你这个result map就起名叫买user,然后type呢,就是刚才咱们那个user色的数据类型,也就是说应该是这个type对不对啊。然后接下来呢,里面你就要针对里面的这个ID进行一个映射,对吧?嗯,ID column,它在数据库列当中,它对应的应该是UID,而在我们的实体当中,它对应的应该是ID哈,通过这种方式呢,我们就对ID做了一个映射,然后接下来呢,就是result啊,然后呢,Column啊,那他在数据库列当中,他应该是username,那么他在我们的实体当中应该是name,对不对?这样的话以此类推,把我们的所有的这样的一个数据列和我们嗯,应用程序实体类当中的属性都给他做一个一一对应,那么最后我们查询出来的结果就应该是能够正确的装配的了啊,这个是第一种解决方案啊好,那这种解决方案呢,我就不给大家去具体的继续写了,因为这是之前的知识点,然后接下来呢,第二种解决方案。
04:40
第二种解决方案呢?我把它切换回来啊,第二种解决方案呢,就是这面的result type,我们没有任何的变化,也不需要去定义my user这样的一个result map,那我们要做的呢,就是在这个查询的列名的这样的一个列表当中,直接做一个别名的一个处理就行了,那么别名处理呢,就是在这个地方直接加S你实体类当中的属性的名字叫什么,这个地方就S什么就可以了,那所以呢,针对于UID,我们就SID是不是啊,针对username我们就s nameme啊,然后同时呢,如果没有别名的一致的,我们就不用处理了,像针对这个delete,我们就as delete it啊,好,然后接下来呢,后面这create time我们就as。
05:34
Create time是吧?啊当这个列比较多的时候呢,大家可以把它做一个换行处理啊,这样的话呢,可读性呢会高一些。啊,然后把它加上这个大写的T啊,然后接下来呢,我们最后一个字段呢,就是。这个update time了是吧?把这个update time也给他写一下,As update time好。
06:00
好,通过这样的方式呢,我们也可以做一个啊,实体和数据库列的一个映射啊,啊这两种方式大家根据实际的情况,你自己去选用就行了啊,这种方式呢,就是写下来比较容易,比较简单啊,然后这种方式呢,就是如果你想做扩展的一些映射的话,比如说在这个里面还要继续的去映射那个collection是吧?啊,那就可以用这种方式了,因为这个里面还可以做collection映射和association映射啊,那所以这种方式呢,他可能未来的这个可扩展性更高啊,但是对于我们现在来说的话呢,我们暂时没有必要去写这个啊,好,我们就直接这样处理,完全能够满足我们目前的一个需求。好,那这块呢,就是我们对这个例子的一个说明,那最后呢,我们再把这个test select page by age呢,再给他进行一个测试。
07:00
好,现在呢,我们已经测试完毕了,我们来看一下结果。大家看这回呢,我们所有的数据内容呢,就已经被正确的填充上了,对不对啊,所以其实呢,没有任何新的知识点啊,大家在做项目的时候,遇到问题的时候一定要学会分析啊,那么针对于刚才的这个问题,大家分析的过程呢,就是他的这个问题一定出现在查询完记录和展示记录中间的这一部分,那么查询完记录一直到展示记录中间,我们只做了一件事情,就是做什么呀,二维数据和实体类的映射,那么它的问题一定是出现在映射这块,那么映射出现的问题呢,就是二维数据的返回列名和我们实体类的属性名不一致所导致的,所以呢,如果你能够啊分析到这样的一个呃层层面的话啊,那一定会很快的把这个问题解决掉,好,那这个是昨天我们遇到的第一个问题。
我来说两句