[공공데이터 개발과정] 0628 스프링

송경근·2023년 6월 28일
0

스프링 배우기

목록 보기
2/2

스프링은 똑똑하다!

jdbc를 쓰다가 마이바티스를 써보니 스프링이 얼마나 똑똑한지 알게됐다

jdbc는 아니지만 비슷한 응애시절 코드

vo,dto 객체를 자동으로 매칭시켜주는 것도 신기하고 mapper 패키지의 마이바티스 태그도 놀랍다!

delete 태그의 속성 중 파라미터를 받아오는 parameterType 속성을 지운 코드이다 그럼에도 웹상에선 아무 문제없이 동작하는데 그 이유는

마이바티스가 파라미터타입을 오브젝트로 우선 받아오기때문이다!

오브젝트 타입으로 받아올 수 있는 이유는 우리가 인터페이스와 VO 객체를 만들어놨기 때문이고! 어머나 세상에 깜짝이야

이 내용은 쳇 지피티에게 물어봤는데 내용은 아래와 같음!

delete 태그의 parameterType 속성은 매개 변수의 자료형을 명시적으로 지정하는 역할을 합니다. 그러나 이 속성을 생략하고 삭제 작업을 수행하면 여전히 동작하는 이유는 MyBatis의 동적 매개 변수 처리 방식 때문입니다.

MyBatis는 매개 변수에 따라 동적으로 SQL을 생성하고 실행하는 기능을 제공합니다. parameterType 속성을 생략하면 MyBatis는 매개 변수를 Object 타입으로 인식합니다. 따라서 매개 변수로 전달된 객체의 타입에 따라 적절한 처리 방식을 선택합니다.

예를 들어, parameterType을 생략한 delete 태그를 사용할 때 매개 변수로 정수를 전달한다면 MyBatis는 해당 정수를 사용하여 SQL을 동적으로 생성합니다. SQL 문 내에서 매개 변수는 #{} 표기법으로 참조되는데, 정수를 전달했다면 #{} 플레이스홀더는 해당 정수의 값을 대체하여 SQL 문을 완성합니다.

만약 매개 변수로 객체를 전달한다면 MyBatis는 객체의 필드에 접근하여 필요한 값을 추출하고 SQL을 생성합니다. 이때 객체의 필드와 SQL 문의 컬럼 이름이 일치해야 합니다. MyBatis는 자동으로 매개 변수와 SQL 문을 매핑하여 실행합니다.

따라서 parameterType 속성을 생략하더라도 MyBatis는 동적으로 SQL을 생성하고 매개 변수를 적절하게 처리하여 삭제 작업을 수행할 수 있습니다. 그러나 명시적으로 parameterType을 지정하는 것은 코드의 가독성과 유지보수성을 높이는 데 도움이 될 수 있으므로 권장됩니다.

profile
개발자가 되려는 학생입니다

0개의 댓글