WEB/Server

[SpringBoot+JDBC] sql like 쿼리문 사용하기

kite707 2022. 1. 25. 18:14

프로젝트 도중 검색 기능을 구현하기 위해 like 쿼리를 사용해야 했다. 그런데 like문의 쿼리문 문법은 아래와 같다.

--A를 포함하는 문자 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '%A%'

그런데 Springboot 내에서는 쿼리문을 아래와 같이 큰 따옴표("")로 묶는다.

//MovieDao 파일
public Writer getWriter(int userIdx) {
        //sql문
        String getUserQuery = "select user_idx,nickname,photo from user where user_idx=?;";
        int param=userIdx;
        return this.jdbcTemplate.queryForObject(getUserQuery,
                (rs, rowNum) -> new Writer(
                        rs.getInt("user_idx"),
                        rs.getString("nickname"),
                        rs.getString("photo")),
                param);

    }

 

그래서 그냥 like문을 사용하면 에러가 난다. SpringBoot에서 sql문 내 ?는 작은 따옴표로 감싸져 치환되므로 검색하고자 하는 내용을 %%로 감싸서 ?에 넣어주면 된다. 아래는 사용 예시이다.

public List<GetMovieInfo> getMovieIdx_Search(String keyword,String sort){
        String query="SELECT movie_idx FROM movie where movie_title like ? ";
        //검색하고자 하는 키워드를 %%로 감싸준다.
        String param="%"+keyword+"%";
        return this.jdbcTemplate.query(query,
                (rs, rowNum) -> new GetMovieInfo(
                        rs.getInt("movie_idx")),param);
    }

위와 같이 SpringBoot에서 like문을 사용할 수 있다.