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: 无效的列类型

参考技术A <select id="findBuildingByIds" resultType="com.talkweb.xlgrid.pojo.BuildingInfo">
这里少了参数类型parameterType
参考技术B if (!allGridIdList.isEmpty())

把这个if去掉试一下追问

追答



这一句是对的吗?
看错误应该某个参数传入为空了

参考技术C allGridIdList类型是什么? 应该要传入一个List追问

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.
求解

<foreach collection="mids" item="mid" open="(" separator="," close=")">
  #mid.mind <!-- 这里改一下 -->
</foreach>

good luck ^_^
参考技术A there is no getter from property

读懂这句话追问

你这也算回答?

追答

你说的算

参考技术B 检查 mid 字段是否正确 参考技术C 我没能够看出来是什么语言。没接触。估计是 parameterType 有问题

以上是关于mybatis foreach 问题的主要内容,如果未能解决你的问题,请参考以下文章

mybatis foreach标签

mybatis <foreach>标签问题

“mybatis 中使用foreach 传

mybatis中判断foreach循环最后一个

MyBatis的foreach语句详解

MyBatis的foreach语句详解