项目场景:
查询数据库返回list集合
持久层
public List<String> queryStorehouseCode(Map<String, Object> params) {
return pickingManageSubQueryDao.queryStorehouseCode(params);
}
问题描述
报错信息:java spiexceptionservicebetweenarrayfilterexception not found
原因分析:
对应的xml文件忘记写返回类型。
map.xml(错误写法)
<select id="queryStorehouseCode" parameterType="java.util.Map">
SELECT
IFNULL(a.storehouse_code,'')
FROM T_PICK_MANAGE_SUB a LEFT JOIN t_material_code b ON a.material_code=b.material_code
LEFT JOIN t_storehouse_manage c ON a.storehouse_code = c.storehouse_code
WHERE a.purchase_code = #{purchaseCode} AND a.parent_id = #{parentId}
ORDER BY c.order_code ASC
</select>
所有的结果都是 List 形式返回,我们需要指定的是返回内容的具体类型。resultType是sql映射文件中定义返回值类型,返回值有基本类型,对象类型,List类型,Map类型等。
resultType:
1、基本类型 :resultType=基本类型
2、List类型: resultType=List中元素的类型
3、Map类型 resultType =map
解决方案:
map.xml(正确写法),必须加resultType=“list集合里面要返回的类型”>
<select id="queryStorehouseCode" parameterType="java.util.Map" resultType="java.lang.String">
SELECT
IFNULL(a.storehouse_code,'')
FROM T_PICK_MANAGE_SUB a LEFT JOIN t_material_code b ON a.material_code=b.material_code
LEFT JOIN t_storehouse_manage c ON a.storehouse_code = c.storehouse_code
WHERE a.purchase_code = #{purchaseCode} AND a.parent_id = #{parentId}
ORDER BY c.order_code ASC
</select>