MyBatis XMLに整数リストを渡して、MySQLクエリのin句で使用するにはどうしたらいいですか?MyBatis 'IN'句のリスト
ファイルのクエリでJava 7、MySQL 5.6 DB、MyBatis 3.0.4を使用しています。
現在のところ、私はこの整数のリストを文字列に変換しており、文字列置換(${}
演算子)を使用して 'IN'句に値を入れています - 期待通りに動作しますが、このアプローチでは、 。
私は<foreach>
要素を使用しようとしましたが、指定する属性を特定できません。
public List<Stripper> getStripperDetails(String club, List<Integer> stripperIds) {
Map<String, Object> input = new HashMap<>();
input.put("club", club);
input.put("stripperIds", stripperIds);
return stripClubMapper.getStripperDetails(input);
}
マッパーXML::以下
は、サンプルのJavaコードである
<select id="getStripperDetails" parameterType="java.util.HashMap" resultMap="StripperMap">
SELECT STRIPPER_ID, STAGE_NAME, REAL_NAME, CLUB FROM EXOTIC_DANCERS WHERE CLUB = #{club} AND STRIPPER_ID IN
<foreach item="item" index="index" collection="stripperIds" open="(" separator="," close=")">
#{index}
</foreach>
</select>
私は<foreach>
要素に指定する属性のかを把握することはできませんよ - 私は続けます#{index}の値に対してNullPointerExceptionを実行しています。
<foreach>
要素の正しい使い方を理解できますか?
編集:以下
は、スタックトレースがある、10086 @:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.lang.NullPointerException
### The error may involve com.stripclub.mapper.stripClubMapper.getStripperDetails-Inline
### The error occurred while setting parameters
### Cause: java.lang.NullPointerException
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:67) ~[mybatis-spring-1.0.0-RC3.jar:1.0.0-RC3]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:345) ~[mybatis-spring-1.0.0-RC3.jar:1.0.0-RC3]
at com.sun.proxy.$Proxy208.selectList(Unknown Source) ~[na:na]
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:193) ~[mybatis-spring-1.0.0-RC3.jar:1.0.0-RC3]
at org.apache.ibatis.binding.MapperMethod.executeForList(MapperMethod.java:85) ~[mybatis-3.0.4.jar:3.0.4]
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:65) ~[mybatis-3.0.4.jar:3.0.4]
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:38) ~[mybatis-3.0.4.jar:3.0.4]
at com.sun.proxy.$Proxy209.getTransactionIds(Unknown Source) ~[na:na]
私は、このような[**この1 **](http://stackoverflow.com/questions/18388936/how-to-iterate-through-など、いくつかの関連の質問をチェックして簡単にする必要がありますhashmap-in-mybatis-foreach?lq = 1)、foreach属性の指定方法を知ることができません。以下は[** dtd **](http://mybatis.org/dtd/mybatis-3-mapper.dtd)のサンプルです。 '<!ELEMENTますforeach!(#PCDATA |含ん|トリム|設定| |どこのforeach |]を選択します|場合|バインド)*> –
bub
あなたのストリッパーIDはマップに空白か空白ですか? – Blank
いいえ、strippperIdsはnull/emptyではありません。値はありません。 – bub