startSequenceId
、stopSequenceId
、orderNumber
を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>
@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>
お役に立てれば。
組み込みの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>
MyBatis 3では、マッパークラス(インターフェース)メソッドで@Param
アノテーションを使用できます。
public getSequenceIdByOrderNumber(@Param("seqId") int sequenceId,@Param("orderId") int orderNo);
次に、parameterType属性を使用せずに、SQLで#{seqId}
、#{orderId}
を使用できます。