mybatis 自动去重问题及解决
mybatis会根据<id>标签去重,在sql查询语句中也要加上id字段查询。
如果没有在resultmap中加上<id>标签,或者sql查询语句不加上id字段,则可能会出现去重现象(如SQL语句查询出来10条结果,但实际映射到接口如List<Menu> selectSelfAndChildByParentId(String menuId)中只有4条)
MyBatis的ResultMap默认是把id作为map的主键。
当id相同时,不管其他字段相不相同,它都当作相同的记录。那当我们想要MyBatis不去重,怎么操作呢?在POJO定义中加入一个伪id作为一标识即可
private int rowNo; //在POJO添加
<id property="rowNo" column="rowNo"/> //resultMap 中添加
SQL:
select @rowNo:[email protected]+1 as rowNo,menu.icon,menu.menuname,menu.url from (SELECT @rownum:=0) a,menu