GetMapping, PostMapping
requestMapping : get이랑 post 둘 다 받을 수 있음
get으로만 받을거라면 getMapping으로 해줘서 굳이 뒤에 method 더 안써줘도 되게끔
파라메터를 DTO로 받기 위한 조건
1. POST로 보낼 것
2. dto의 필드와 보내는 파라메터의 이름과 갯수가 정확히 일치할 것 (null값 안됨)
ModelAndView
는 클래스라서 컨트롤러에서 가져올 필요없고(model처럼) 바로 서비스에서 써줄 수 있
model에는 데이터밖에 못담았는데 modelandview는 view도 담을 수 있어
사용할 땐 객체화 해주기
ModelAndView mav = new ModelAndView();
mav.setViewName(page);
mav.addObject("msg",msg);
return mav;
hashmap의 단점
어떤 데이터가 들어가고 나갔는지 확인해보기 힘듬
-> 이걸보완한게 dto를 데이터타입으로 쓰는거
쿼리로그 찍는거
1. 라이브러리 추가 (pom.xml에)
<!-- sql로거 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
2. application.properies에서 바꿔주고(첫째줄 둘째줄)
#db info
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:1521/mydb
spring.datasource.username=web_user
spring.datasource.password=pass
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.drivers=org.mariadb.jdbc.Driver
3. 추가해줄 파일 2개
추가
근데 이렇게 하면 너무 길게 나와서
<!-- SQL LOG 옵션 설정 (쿼리문과 걸린시간, 결과를 보도록 한다.)-->
<logger name="jdbc.connection" level="OFF"/>
<logger name="jdbc.sqlonly" level="OFF"/>
<logger name="jdbc.sqltiming" level="INFO"/>
<logger name="jdbc.audit" level="OFF"/> (뭐 많이 찍어주는 놈)
<logger name="jdbc.resultset" level="OFF"/>
<logger name="jdbc.resultsettable" level="INFO"/>
이것도 추가해줘야함
4. application.properies에서 로그레벨 지정해주기
logging.level.root = info
동적쿼
쿼리문에서 if쓰고싶다면
mybatis 활용,
'Spring Boot' 카테고리의 다른 글
11_WebClient와 12_ApiServer를 한 이유 (0) | 2023.06.01 |
---|---|
WebClient (0) | 2023.05.31 |
필드 주입과 생성자 주입, rest, @RestController (0) | 2023.05.30 |
spring boot 스프링부트 (0) | 2023.05.25 |
log4j.xml (0) | 2023.05.23 |