在SpringBoot应用中,比如想返回一个表的主键id构成的Long型数组Long[],需要在XxxMapper.xml
文件中这样定义select语句:
<select id="selectIds" parameterType="int" resultType="Long">select id from sys_job_log limit #{count}
</select>
注意,虽然想返回的是Long[],但是resultType的值只能写成"Long",而不能写成"Long[]",否则会报如下错误:
Caused by: org.apache.ibatis.executor.ExecutorException:
No constructor found in [Ljava.lang.Long; matching [java.lang.Long]
意思是我这里有个Long类型的数据,但无法找到一个合适的(以一个Long数据为入参的)Long数组(即[Ljava.lang.Long)的构造方法,因此报错。
然后在XxxMapper.java
类中这样定义方法即可:
Long[] selectIds(@Param(value = "count") int count);
调用该方法,就可以返回一个Long[]的结果了。
PS:网上很多资料,都说将 resultType 的值写成 “Long[]”,其实是错的,误人子弟,坑。