JUST GO

[공통] MyBatis 본문

Spring Boot/학습내용

[공통] MyBatis

root_go 2022. 10. 26. 15:35

MyBatis

  • 필요한 DB 관련 메서드는 인터페이스에 정의하고, 그 인터페이스 및 이가 포함하는 메서드 등을 외부 XML과 연결하여 쿼리를 자바 코드와 분리하여 관리하기 위해 사용한다.
  • 엔티티(Entity) 객체의 멤버를 자동으로 초기화해 줌으로 굉장히 편리하다.
  • application.properties 설정
# MyBatis에서  활용할 XML 파일의 위치를 지정한다.
mybatis.mapper-locations=classpath:mappers/**/*.xml
# 사용할 DBMS의 JDBC Driver 전체 경로
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
# DBMS URL
spring.datasource.url=jdbc:mariadb://localhost:3306
# DBMS 사용자 이름
spring.datasource.username=study
# DBMS 사용자 비밀번호
spring.datasource.password=test1234

  • 구조
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dev.rootgo.study_web.mappers.IMemoMapper">

</mapper>
<mapper> 태그 아래에 작성할 수 있는 태그의 속성으로는 아래와 같은 것들이 있다.
공통 속성(insert, select, update, delete 등 전부 다)

 

  • <mapper> ... </mapper> : 해당 XML 파일과 연결되는 인터페이스가 가지는 메서드들에 대한 내용을 가지는 태그이다. 
    • 속성
      • namespace : 연결코자 하는 인터페이스의 전체 경로
    • 자식 태그
      • 공통
        • 속성
          • id : 해당 태그와 연결시킬 인터페이스의 메서드 이름을 지정한다.
          • parameterType : 연결된 메서드가 가지는 매개변수의 타입 한 개만 지정한다.(없으면 생략)
        • <insert> ... </insert> : INSERT 쿼리를 실행하기 위해 사용한다.
          • 속성
            • useGenerateKeys : INSERT 때문에 자동으로 생성된 키를 사용하겠다는 의미로 그 값은 true 혹은 false 이다.(기본 값 false)
            • keyProperty : 자동으로 생성된 키를 대입할 멤버 변수의 이름이다. useGeneratedKeys 가 true 일때만 유효하다.
            • keyColumn : 자동으로 생성된 키에 대한 DBMS의 열 이름이다. useGeneratedKeys가 true 일때만 유효하다.
        • <select> ... </select> : SELECT 쿼리를 실행하기 위해 사용한다.
          • 속성
            • resultType : 해당 쿼리를 실행 함으로써 반환될 타입의 전체 경로이다.
          • <update> ... </update> : UPDATE 쿼리를 실행하기 위해 사용한다.
          • <delete> ... </delete> : DELETE 쿼리를 실행하기 위해 사용한다.
          • 기타 CREATE, DROP, ALTER 모두 가능하지만 잘 사용하지는 않는다.
  • #{...} : 쿼리 안에서 전달된 매개변수의 멤버를 대입하기 위해 사용한다. 자동 이스케이핑이 적용된다.
  • ${...} : 쿼리 안에서 전달된 매개변수의 멤버를 대입하기 위해 사용한다. 자동 이스케이핑이 적용되지 않는다. 마찬가지로 보안상 취약함으로 클라이언트가 넘겨준 값을 대입하기 위해서는 절대로 사용하지 않는다.

'Spring Boot > 학습내용' 카테고리의 다른 글

[공통] 의존성 추가  (0) 2022.10.31
[공통] 프로젝트 생성  (0) 2022.10.31
[공통] 프로젝트 구조  (0) 2022.10.25
[공통] 타임리프  (0) 2022.10.25
[코드] HomeController  (0) 2022.10.25