请问mybatis里集合类型是如何封装的,即多行数据归并成一行的具体实现算法是怎么样的?

sql查到的结果集如下
a b
k1 1
k1 2
k2 1
k2 2
k1 3
mybatis是通过什么算法实现了如下json(我简单写了,不写等于号了),(实体类结构就是简单的实体类,其中有个list字段是field是b的集合类)
[{a:k1,list:[{b:1},{b:2},{b:3}]},{a:k2,list:[{b:1},{b:2}]}]