質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Q&A

解決済

2回答

10164閲覧

MyBatis 3.2.8 IN句のforeach 複数のパラメータが1つのパラメータになる

suna9123

総合スコア10

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

0グッド

0クリップ

投稿2016/07/10 07:40

###前提・実現したいこと

MyBatis Mapper XMLでIN句に、foreachを適用したところ、
複数のパラメータが、1つのパラメーターとなってしまい、
select文の検索が正しく行えません。複数のパラメータを
複数のパラメータのままで、prepared statementを作成したいですができないでしょうか。

###該当のソースコード
業務にかかわる部分は修正しています。

<mapper namespace="SoshikiDao"> <resultMap id="Dssks100DtoMap" type="SoshikiMap"> <result column="AAA" jdbcType="CHAR" property="aaa" /> <result column="BBB" jdbcType="CHAR" property="bbb" /> <result column="CCC" jdbcType="CHAR" property="ccc" /> </resultMap> <select id="selectSoshiki" resultMap="SoshikiMap" parameterType="SoshikiDto"> select * from SOSHIKI <where> <if test="soshikiKbList != null and soshikiKbList.size() > 0"> and SOSHIKI_KB in <foreach collection="soshikiKbList" item="soshikiKb" index="index" open="(" close=")" separator=","> #{soshikiKb} </foreach> </if> </where> </select>

上記のMapper.xmlを設定して、SoshikiDao.SoshikiDao(SoshikiDto dto)を実行したところ、dto.soshikKbListには、D,Hの2個の要素があるにもかかわらず、1つにまとまって('D,H')、prepared statementに設定しているようです。

where soshiki_kb in ('D','H')としたいところが、where soshiki_kb in ('DH')になっている?

<<実行結果ログ>>
[DEBUG] 2016-07-09 13:55:18,281 - org.apache.ibatis.logging.jdbc.BaseJdbcLogger ==> Preparing: select AAA,BBB,CCC from SOSHIKI WHERE SOSHIKI_KB in ( ? )
[DEBUG] 2016-07-09 13:55:18,281 - org.apache.ibatis.logging.jdbc.BaseJdbcLogger ==> Parameters: D,H(String)
[DEBUG] 2016-07-09 13:55:18,281 - org.apache.ibatis.logging.jdbc.BaseJdbcLogger <== Total: 0

###補足情報(言語/FW/ツール等のバージョンなど)

mybatis 3.2.8
maybatis-spring 1.2.5
struts2-core 2.3.28
Spring 4.1.9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

soshikiKbListが、1個の要素しか持っていませんでした。
早とちりして申し訳ありません

投稿2016/07/10 09:43

suna9123

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんな感じでどうスか?

#{soshikiKb, jdbcType=VARCHAR}

投稿2016/07/10 08:18

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問