案例:
SELECT (@num:=@num+1) AS `index`, name, age
FROM sys_user, (SELECT @num:=0) AS a order by age,name;
查询结果:


datagrip和dbeaver查询结果不一样,使用cmd查询,默认也是无小数点的

但实际返回结果,其实是带点的
@Data
public class SysUserDTO {
// private Integer id;
private String id;
// private Integer index;
private String index;
private String name;
private Integer age;
}
@Test
void queryWithIndex() {
List<SysUserDTO> userDTOS = userMapper.queryWithIndex();
log.info("userDTOS:{}",userDTOS);
}
<select id="queryWithIndex" resultType="com.bootmaven.vo.SysUserDTO">
SELECT (@num:=@num+1) AS `index`, name, age,id
FROM sys_user, (SELECT @num:=0) AS a order by age,name
</select>
根据返回类型,mybatis查询有两种不同结果:
userDTOS:[
SysUserDTO(id=1, index=1, name=Jone, age=18),
SysUserDTO(id=2, index=2, name=Jack, age=20),
SysUserDTO(id=4, index=3, name=Sandy, age=21),
SysUserDTO(id=5, index=4, name=Billie, age=24),
SysUserDTO(id=3, index=5, name=Tom, age=28)]userDTOS:[
SysUserDTO(id=1, index=1.0, name=Jone, age=18),
SysUserDTO(id=2, index=2.0, name=Jack, age=20),
SysUserDTO(id=4, index=3.0, name=Sandy, age=21),
SysUserDTO(id=5, index=4.0, name=Billie, age=24),
SysUserDTO(id=3, index=5.0, name=Tom, age=28)]
上面是Integer接收index,下面为String接收index
即:mysql默认返回的下标其实是带小数点的。(多列带点,单列不带)
参考:MySQL给查询加序号
文章讨论了在使用MySQL进行查询时,不同工具如Datagrip和Dbeaver以及命令行客户端对于带有自增索引的查询返回结果存在数字类型差异的问题。在MyBatis中,由于数据类型的映射,相同查询可以得到Integer或String类型的索引值,这取决于字段定义。文章还提到了MySQL默认返回的下标可能带有小数点,这取决于查询的列数。

3707

被折叠的 条评论
为什么被折叠?



