继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

2个服务的数据,在一个table表格中分页显示(只讲思路)

一念征途
关注TA
已关注
手记 11
粉丝 13
获赞 7

现在有这么场景:服务A要分页显示一些数据,而这些数据是先显示服务A(它本身的),如果数据不够,就再显示服务B的。

例如:服务A有11条数据,服务B有23条数据,这样总条数是34条;前台每页显示10条,共4页。具体是:

第1页,只显示服务A的前10条;

第2页,显示服务A的1条,显示服务B的9条(共10条);

第3页,只显示服务B的第10-19条(共10条);

第4页,只显示服务B的第20-23条(共4条)


现在开始进行代码流程梳理:

第1页,前台传过来pageNum:1 和pageSize:10,服务A先查自己的,取10条,判断结果集是否小于10条,发现等于10条,那就说明服务A的数据已经够了,不用再取服务B的数据了,但要获取服务B的记录数,所以还是要调用服务B,只是参数是pageNum:1 和pageSize:0,这样服务B会返回它自己的记录数,这样要显示的数据和总记录数就都有了;

第2页,前台传过来pageNum:2 和pageSize:10,服务A先查自己的,取10条,判断结果集是否小于10条,发现只查出1条,那还差10-1=9条,那就要调用服务B取前9条,所以参数是pageNum:1 和pageSize:9,这样服务B会返回它自己的记录数,服务A的1条和服务B的9条合并成10条,这样要显示的数据和总记录数就都有了;

第3页:前台传过来pageNum:3 和pageSize:10,服务A先查自己的,取10条,判断结果集是否小于10条,发现只查出0条,那还差10-0=10条,那就要调用服务B取第10-19条,如果传参是pageNum:2和pageSize:10,的话,服务B就是取11-20条,这样第10条就被跳过了,所以我这时传参数为:pageNum:1 和pageSize:3*10-11=19,这样取到了19条,但只取第10-19条,所以需要把前((3-1)*10-11)=9删掉,这样就剩服务B的10-19条了,这样要显示的数据和总记录数就都有了;

第4页:前台传过来pageNum:4 和pageSize:10,服务A先查自己的,取10条,判断结果集是否小于10条,发现只查出0条,那还差10-0=10条,所以传参数为:pageNum:1 和pageSize:4*10-11=29,这样取到了23条,但只取第20-23条,所以需要把前((4-1)*10-11)=19删掉,这样就剩服务B的20-23条了,这样要显示的数据和总记录数就都有了;


总结:

前台传过来pageNum:N 和pageSize:10,

(1)服务A先查自己的,查出结果,

(2)再调用服务B,传参数pageNum:1 和pageSize:N*10-服务B的总记录数(如果为负,则取值为0),取到服务B的数据要进行裁剪,裁剪掉前(N-1)*10-服务B的总记录数(如果为负,则取值为0,或者不裁剪),

(3)把服务A和服务B的结果集合并,把服务A和服务B的总记录数相加,

这样就OK了。

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP