Mybatis foreach集合是地图参数中的列表 [英] Mybatis foreach collection is a list in a map-parameter

查看:76
本文介绍了Mybatis foreach集合是地图参数中的列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用mybatis 3.2.8版本.

I'm using mybatis 3.2.8 version.

Mapper.java

Mapper.java

List<BuddyId> findBuddyIds(HashMap<String, Object> map);

xml

<select id="findBuddyIds" parameterType="map" resultMap="BuddyIdResultMap">
select * 
from seerid.buddyIds
where id REGEXP
<foreach collection="idSplits" item="item" index="index" open="'" close="'" separator="|">
    #{item}
</foreach>
</select>

Controller.java

Controller.java

HashMap<String,Object> map = new HashMap<String,Object>();

map.put("idSplits", new ArrayList<String>(Arrays.asList(idSplits)));

buddyScanResult = seerIdDAO.findBuddyIds(map);

它将收到以下错误.

查询数据库时出错.原因:java.sql.SQLException:无法设置参数

错误可能存在于文件[/Users/jylee/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/services/WEB-INF/classes/com/ohinc /services/seerid/mybatis/SeerIdMapper.xml]

该错误可能涉及com.ohinc.services.seerid.mybatis.SeerIdMapper.findBuddyIds-Inline

设置参数时发生错误

SQL:从seerid.buddyIds中选择*,其中id REGEXP'吗? | ?

原因:java.sql.SQLException:无法设置参数;未分类的SQLException for SQL []; SQL状态[null];错误代码

[0];无法设置参数;嵌套的异常是 java.sql.SQLException:无法设置参数]的根本原因 org.mariadb.jdbc.internal.common.query.IllegalParameterException:否 '?'在那个位置 org.mariadb.jdbc.internal.common.query.MySQLParameterizedQuery.setParameter(MySQLParameterizedQuery.java:103)

Error querying database. Cause: java.sql.SQLException: Could not set parameter

The error may exist in file [/Users/jylee/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/services/WEB-INF/classes/com/ohinc/services/seerid/mybatis/SeerIdMapper.xml]

The error may involve com.ohinc.services.seerid.mybatis.SeerIdMapper.findBuddyIds-Inline

The error occurred while setting parameters

SQL: select * from seerid.buddyIds where id REGEXP ' ? | ? '

Cause: java.sql.SQLException: Could not set parameter ; uncategorized SQLException for SQL []; SQL state [null]; error code

[0]; Could not set parameter; nested exception is java.sql.SQLException: Could not set parameter] with root cause org.mariadb.jdbc.internal.common.query.IllegalParameterException: No '?' on that position at org.mariadb.jdbc.internal.common.query.MySQLParameterizedQuery.setParameter(MySQLParameterizedQuery.java:103)

我不知道如何解决这个问题.

I don't know how to solve this problem.

请帮助我.

推荐答案

我发现了这个问题,可能是可以解决这个问题的. 您的xml有一个错误:

I found this problem, may be can solve this question. you xml have a mistake:

<select id="findBuddyIds" parameterType="map" resultMap="BuddyIdResultMap">
select * 
from seerid.buddyIds
where id REGEXP
<foreach collection="idSplits" item="item" index="index" open="'" close="'" separator="|">
    ${item}
</foreach>
</select>

您应该在foreach中使用$ replace#.

you should be use $ replace # in foreach.

具有条件IN的MyBatis问题<在地图中使用列表进行foreach

这篇关于Mybatis foreach集合是地图参数中的列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆