TIL

효준·2024년 11월 6일
0

11월 6일 수요일
AM 알고리즘 풀이
PM 6주차 강의 수강, 과제 수행

💡 Today Issue

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

🕐회고

아직 익숙치 않은 문법도 많고 이렇게 사용하나 싶은 것들이 많다 여러번 사용해보면서 잘 익혀보도록 노력하자

profile
사진은 캣타워가 생겨 포효하는 고양이입니다.

0개의 댓글

관련 채용 정보