11월 6일 수요일
AM 알고리즘 풀이
PM 6주차 강의 수강, 과제 수행
toLocalDateTime();
@RequestParam();
동적쿼리
.toLocalDateTime()
위와 같은 RowMapper 구현 중에 create_date, update_date를 LocalDateTime로 선언하여 ResultSet에는 getLocalDateTime이 존재하지 않아 getTimeStamp로 먼저 받고 .toLocalDateTime으로 변환하여야 한다.
@RequestParam();
@GetMapping public String getUserName( @RequestParam String name) { reteun name; }
위 메서드에서 name에 들어오는 값이 없을 경우 Bad Request, Required String Parameter 'name' is not present라는 예외를 발생시킵니다.
이를 해결하기 위해 @RequestParam(required = false)와 같이 required 속성을 추가하면 해당 필드가 쿼리스트링에 존재하지 않아도 예외가 발생하지 않습니다.
동적 쿼리
정적 쿼리
미리 정의된 SQL문장이나 JPQL 쿼리
TypedQuery<Employee> query = entityManager.createQuery ("SELECT e FROM Employee e WHERE e.firstName = 'John'", Employee.class); List<Employee> results = query.getResultList();
동적 쿼리
동적 쿼리를 사용하면 사용자의 입력이나 프로그램의 상황에 따라 쿼리가 동적으로 변할 수 있습니다.
동적 SQL요소를 사용해 동적 쿼리를 작성<if>, <choose>, <where>, <when>, <otherwise>, <foreach>, <set>, <trim>
동적 쿼리란 상황에 따라 다른 문법의 SQL을 적용하는 것을 말한다.
예를 들면 DB에서 값을 조회할 때 조회 조건이 동적으로 바뀌어야 하는 경우가 많다. 이런 상황을 Querydsl을 사용하면 손쉽게 해결할 수 있다.
if문
<if test="keyword != null and keyword != ''"> AND STR_RUL_ID = #{searchKeyword} </if>
WHERE절
<select id="getUserList" parameterType="map" resultType="User"> SELECT * FROM users <where> <if test="name != null"> AND name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </where> </select>
QueryDsl이란?
QueryDsl은 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크이다.
ex) JPA
=> 현재 Jdbc에서는 적용하기 힘들다.
Reference
https://velog.io/@hazeel0c0/%EB%8F%99%EC%A0%81-%EC%BF%BC%EB%A6%AC%EB%9E%80
아직 익숙치 않은 문법도 많고 이렇게 사용하나 싶은 것들이 많다 여러번 사용해보면서 잘 익혀보도록 노력하자