mybatis foreach 问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis foreach 问题相关的知识,希望对你有一定的参考价值。
这是sql语句
<select id="findBuildingByIds" resultType="com.talkweb.xlgrid.pojo.BuildingInfo">
select t.*
from G_BUILDING_INFO t
where 1 = 1
<if test="allGridIdList!=null">
and t.griddingId in
<foreach collection="allGridIdList" index="index" item="item" open="(" separator="," close=")">
#item
</foreach>
</if>
<if test="buildingInfo.buildingCode!=null">
and t.buildingCode = #buildingInfo.buildingCode
</if>
<if test="buildingId!=null">
and t.buildingId = #buildingInfo.buildingId
</if>
<if test="null!=buildingInfo.buildingName and ''!=buildingInfo.buildingName">
and t.buildingName like '%$buildingInfo.buildingName%'
order by t.buildingId
</select>
这是代码:
Map<String, Object> inMap = new HashMap<String, Object>();
inMap.put("buildingInfo", buildingInfo);
if (!allGridIdList.isEmpty())
inMap.put("allGridIdList", allGridIdList);
Pagination page = buildingService.findBuildingByIds(inMap, pagination);
但当allGridIdList不为空的时候总是报错,报错信息如下:
Caused by: java.sql.SQLException: 无效的列类型
这里少了参数类型parameterType 参考技术B if (!allGridIdList.isEmpty())
把这个if去掉试一下追问
这一句是对的吗?
看错误应该某个参数传入为空了
allGridIdList 的类型是List allGridIdList = new ArrayList();这样有问题吗?
追答看代码是没什么问题.. 你得把最终拼好的sql弄出来 执行一下 看是不是sql本身有问题
foreach看的是没什么问题
Mybatis foreach的问题 配置:
<select id="listPageDrugConsumptionYy" resultMap="DrugConsumptionYy" parameterType="com.jiayu.dc.report.statistictable.drugConsumption.entity.DrugConsumptionYy">
select * from xxx where mid in
<foreach collection="mids" item="mid" open="(" separator="," close=")">
#mid
</foreach>
</select>
==================================================
mids 是DrugConsumptionYy中的一个list类型的属性
执行后说there is no getter from property named mid in class DrugConsumptionYy.
求解
#mid.mind <!-- 这里改一下 -->
</foreach>
good luck ^_^ 参考技术A there is no getter from property
读懂这句话追问
你这也算回答?
追答你说的算
参考技术B 检查 mid 字段是否正确 参考技术C 我没能够看出来是什么语言。没接触。估计是 parameterType 有问题以上是关于mybatis foreach 问题的主要内容,如果未能解决你的问题,请参考以下文章