web-dev-qa-db-ja.com

複雑なオブジェクトを使用せずにSELECTに複数の引数を渡す

startSequenceIdstopSequenceIdorderNumberをSQLマップに渡そうとしていますが、型付きオブジェクト、つまりparameterType="com.abc.Order"を使用したくありません。 、できますか?

<select id="getSequenceIdByOrderNumber" parameterType="?" resultType="int">
    select *
    from log
    where seq_id
    between #{startSequenceId} and #{stopSequenceId}
    and order_no = #{orderNumber}
    and rownum = 1
</select>
8
Oh Chin Boon

@Chinとにかく入力したものを簡単な例で投稿しますが、探しているものは見つかりました。 iBatis2.3.4を使用した私の例

<select id="retrieveTestXXX" parameterClass="Java.util.Map" resultClass="Java.lang.Integer">
    SELECT
    example_table.id
    FROM example_table
    WHERE example_table.xx_id = #testId# AND example_table.xx_id = #test2Id#
</select>

お役に立てれば。

8
MalsR

組み込みのparameterType'map 'を使用できます。

Map<String, Object> parms = new HashMap<String, Object>();
parms.put("name", "abc");
parms.put("phone", "123");
parms.put("email", "[email protected]");

List<Contact> list = myBatis.selectList("getContacts",parms);


<!-- in xml mapper -->
<select id="getContacts" parameterType="map" resultMap="Contact">
  SELECT * FROM CONTACT 
  WHERE CONTACT_NAME = ${name}
  AND CONTACT_PHONE = ${phone}
  AND CONTACT_MAIl = ${email}
</select>
16
johnm

MyBatis 3では、マッパークラス(インターフェース)メソッドで@Paramアノテーションを使用できます。

public getSequenceIdByOrderNumber(@Param("seqId") int sequenceId,@Param("orderId") int orderNo);

次に、parameterType属性を使用せずに、SQLで#{seqId}#{orderId}を使用できます。

6
jAnA