I. 소개
최근에는 문자열 배열을 전달하고 문자열 배열을 반환하는 SQL 로직이 필요합니다.
자바빈으로 캡슐화하기엔 너무 게으른 관계로 간단한 예제를 작성해서 요약해봤습니다.
둘, 코드
1.mapper.java는 다음과 같이 작성할 수 있습니다.
public interface MyMapper {
String[] findUserIdsByStudentIds(String[] studentIds);
}
2.mapper.xml은 다음과 같이 작성할 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.my.mapper.MyMapper ">
<select id="findUserIdsByStudentIds" resultType="java.lang.String" parameterType="java.lang.String">
<![CDATA[ SELECT user_id FROM mytable A ]]>
<where>
student_id IN
<foreach collection="array" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</where>
</select>
</mapper>
예를 들어 이 방법으로 전달하면 다음이 ['1','2']
실행됩니다.
SELECT user_id FROM mytable A where student_id IN ('1','2')
하나의 필드만 쿼리되므로 여러 행이 반환될 때 문자열 배열이 반환될 수 있습니다. (반환된 1개 행도 문자열 배열입니다)