Mybatis踩坑总结

Posted by Wh0ami-hy on January 25, 2024

1. int变long

MySQL中id字段存的是unsigned int 类型,MyBatis框架却将其转为了Long

MyBatis框架使用Long来映射MySQL的int。原因是我们的数据库id字段设置的类型为无符号的Int型

如果MySQL选择无符号的int类型时,它的取值范围是要超过java的Integer类型的,所以MyBatis框架为了确保能包括MySQL中int的所有取值范围,使用java中的Long映射最为可靠。

2. 查询结果集合size为1,但是集合内对象为null

在写查询SQL时,务必要带一个非空字段作为结果集,否则当查询结果字段均为空值时,返回的集合size为1,但是对象为null,从而引发空指针。

select a,b from temp where tempId = #{tempId}

当a、b均为null时,集合的size为1,但是集合对象为null,会引发空指针,正确写法应该如下

select a,b,tempId from temp where tempId = #{tempId}

本站总访问量