Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

승띵이의 개발일지

[Spring Boot] MyBatis 본문

언어/Spring Boot

[Spring Boot] MyBatis

승띵이 2022. 10. 26. 17:20

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

TMI

여태껏 마이 배티스라고 알고 있었는데 알고보니 마이 바티스라고 읽는 거였다..

왠지 배신감

Comments