반응형
프로젝트를 진행하다 Service부분에서 null발생
뭔짓을 해도 Service부분에서 null이 발생하길래 쿼리가 제대로 안되는 줄 알고 select해봄
그래도 null이 나오길래 다시 확인해보니 Service자체를 Mapping시켜주지 않아서 그랬었다.
@Autowired로 Service 맵핑시켜 정상작동 확인
Service부분에서 null이 발생하는 원인을 찾다가 쿼리문을 확인하는 과정에서 알게된 내용 정리
parameterType
- <foreach> 태그에 대한 parameterType 속성은 해당 <insert>나 <update> 쿼리에 전달되는 파라미터의 자료형 지정
collection
- <foreach> 태그의 collection 속성은 반복 작업을 수행할 컬렉션 또는 배열 지정
- 이 컬렉션 또는 배열은 MyBatis에서 제공한 parameterType에 정의된 변수에 할당
item
- collection에 포함된 요소를 가리키는 변수 이름 지정
- <foreach> 태그 내에서 #{item}을 사용하여 컬렉션의 각 요소를 참조, #{item}은 컬렉션의 각 요소를 나타내며, 이 변수 이름은 자유롭게 선택
open
- foreach를 수행하기 전에 붙이는 내용
separator
- foreach를 1회 수행 후 붙이는 내용
close
- foreach를 종료하기 직전에 가장 마지막에 붙이는 내용
// List<VO>로 된 파라미터 입력받음
<insert id="insertDataVariableGroupExcelData" parameterType="java.util.List">
// 문장 전체를 List의 길이만큼 반복 하면서 ;로 구분지어줌
<foreach collection="list" item="item" index="index" separator=";">
INSERT INTO public.cdp_data_variable_group (
group_seq
, group_code
, use_yn
, insert_date
) VALUES (
(select max(group_seq) + 1 from public.cdp_data_variable_group)
, trim(#{item.groupCode})
, #{item.useYn}
, now()
)
</foreach>
</insert>
// 단일 객체 받음
<delete id="deleteDataVariables" parameterType="DataVariableVO">
DELETE FROM public.cdp_data_variable
WHERE var_seq IN
// 특정 요소(varSeq)를 반복해서 가져오고 가져온 값을 ()안에 넣어주면서 ,로 구분지음
<foreach collection="varSeqList" item="varSeq" open="(" separator="," close=")">
#{varSeq}
</foreach>
</delete>
반응형
'Backend > DB 실무' 카테고리의 다른 글
[Mybatis] 대소문자 구분 없이 조회 (0) | 2023.11.10 |
---|---|
[Mybatis] The column index is out of range & COALESCE(A, B) (0) | 2023.11.09 |
[SQL] ROW_NUMBER()/RANK() OVER() (0) | 2023.10.18 |
[Mybatis] Mybatis XML 작성 템플릿 (0) | 2023.07.25 |
Oracle을 ODBC로 연결 (0) | 2022.07.07 |