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
반응형
'IT > 자바, 스프링' 카테고리의 다른 글
잘 안써서 몰랐지만 유용할(수도 있는) 자바 String 함수 (0) | 2023.07.28 |
---|---|
@Valid와 BindingResult로 인풋값 검증이 안됨... (0) | 2023.05.16 |
Pattern과 Matcher로 문자열에서 원하는 값 뽑아내기 (0) | 2023.04.22 |
스프링 프로젝트 로그에서 특정 sdk의 로그레벨만 조정하기 (0) | 2023.03.29 |
JPA Hibernate 오류 : could not extract resultset (0) | 2022.12.22 |