[Spring] MyBatis SQL Mapper 작성

JOY·2023년 4월 30일
0

[Spring]

목록 보기
13/18
post-thumbnail

📌 MyBatis의 SQL Mapper

SQL 매핑을 위한 XML 파일

<mapper namespace="Mapper">

mapper 태그의 namespace 속성 설정

SQL 문장 설정

  • id 설정 - 고유 ID 설정
  • resultType - SQL 쿼리의 결과 타입 설정(DML문은 사용 X)
  • parameterType 설정 - SQL 구문에서 사용될 파라미터 타입 설정
    : Java에 내장된 별칭 사용 (대소문자 구분)
    : MyBatis 설정 파일에 별칭 설정(typeAliases 태그 이용)
<!--별칭 설정  예시-->
<typeAliases>
	<typeAlias type="db.dto.UserDto" alias="userDTO"/>
</typeAliases>
  • 파라미터값 설정
    - #{} : PreparedStatement 방식
    - ${} : Statement 방식, 문자or숫자는 그대로 바인딩 (그러나, 보안에 취약)
    - parameterType의 파라미터 개수가 여러개일 경우
    parameterType = "map"

Select

<!--Select 형식-->
<select id="" parameterType="" resultType="" resultMap="">

select문 예시

<select id="selectName" resultType="string">
	select ename from emp
</select>

Insert, Update, Delete

<!--Insert, Update, Delete 형식-->
<insert|update|delete id="" parameterType="" >

insert문 예시

<insert id="insert" parameterType="userDTO">
	insert into users (name, email, phone) 
	values (#{name}, #{email}, #{phone})
</insert>

delete문 예시

<delete id="delete" parameterType="int">
	delete from emp where empno = #{_parameter}
</delete>

SQL 조건문 예시

Between A and B

<!-- Min ~ Max 검색 : between A and B  -->
<select id="selectMinMax" parameterType="map" resultType="empDTO">
	select empno, ename, job, sal, hiredate
	from emp
	where sal #{min} and #{max}
</select>

Order by

<!-- 정렬대상컬럼을 인수로 받아 정렬하기 -->
<select id="selectOrder" parameterType="string" resultType="empDTO">
	select empno, ename as empName, job, sal, hiredate
	from emp
	order by ${_parameter}  <!--order by #{_parameter}-->
</select>

order by #{_parameter} 형식 불가능
ex) sal을 기준으로 정렬시 order by #{_parameter}으로 SQL문장 작성한다면
parameterType="string" 으로 인해 order by 'sal' 처럼 들어가는 것이기 때문에
#이 아닌 $ 사용

profile
Just Do IT ------- 🏃‍♀️

0개의 댓글