IT/자바, 스프링

Spring boot와 xml 없는 mybatis 사용하기 (어노테이션 적용)

thesse 2023. 6. 16. 09:50
300x250
반응형

xml 없이 어노테이션으로 마이바티스 사용하기

 

 

build.gradle

dependencies {
	...
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
}

 

 

Mapper.java

package com.thesse.mybatis.mapper;

import com.thesse.dto.testDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface Mapper {

    @Select("select dept_id, avg(score) as grade\n" +
            "from public.employ_summary\n" +
            "where uid = #{uid} and substring(current_dt::varchar,1,6) = #{monthStr}\n" +
            "group by dept_id\n" +
            "order by grade")
    List<testDto> myTest(@Param("uid") String uid,
                             @Param("monthStr") String monthStr);
}

@Select 안에 쿼리 작성시 매개변수는 #{} 형태로 넣어줌

${} 형태도 사용 가능하지만 이는 sql 인젝션 위험이 있으므로 지양

 

#{} 사용시 데이터 타입에 따라서 자동 변환되므로 따옴표 필요 없음

 

 

 

testDto.java

package com.thesse.dto;

import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Builder
public class testDto {
    String uid;
    String grade;
}

 

 

Service.java

    @Autowired
    private final Mapper mapper;

    public void mybatisTest(){
        List<testDto> result = mapper.myTest("20169", "202306");
        log.info("ok");
    }

 

 

 

300x250
반응형