sqlBuilder 만들어 보기

Single Ko·2023년 9월 9일
0

공부하며 정리

목록 보기
17/17

이미 SQL을 사용하기 쉽게 해주는 많은 라이브러리들이 있고, 그 중에서 제일 유명한 것이 바로 MyBatis나 JOOQ가 있다.이 외에도 JPA를 주로 사용할때 많이 사용하는 Querydsl 같은 것도 있음.

그럼에도 한번 내가 SQL 만들 때 어떻게 하면 좋을지 생각해서 만들어 보려 함.
일단 목표는 기존의 문자열로 만들던 것을 최대한 문자열을 덜 사용하고 구조를 만들어서 컬럼, 테이블, 값 등만 입력하면 되게 만들어 보려고 함.

결국 그냥 형태만 빌려서 체인메서드 형식으로 쿼리를 짜게 만듬

// Query =>  DELETE FROM tables WHERE id = ?;
// Parameters - id
DeleteBuilder builder = deleteQuery()
        .deleteFrom(tables)
        .whereEq("id", id);

// Query => DELETE FROM users where name = ? AND age > ? OR city = ?
// parameters - "John", 30, "New York"
DeleteBuilder builder = deleteQuery()
            .deleteFrom("users")
            .whereEq("name", "John")
            .andGt("age", 30)
            .orEq("city", "New York");

처음에는 SQL에 직접 값이 전부 입력되는 형식으로 만들었다가, SQL Injection이 생각나서 JDBCTemplate을 이용할 때 사용하기 때문에 parameter 들을 따로 빼내서 만들어둠.

jdbcTemplate.update(builder.getQuery(), builder.getParameters());

이렇게 만들어서 넣는 형식으로 바꾸었다.

만들다 보니 쿼리문을 생각할 게 엄청 많다.. 전부 생각하진 못하지만 그래도 최대한 잘 만들어 보고 싶어서 만들어 보고는 있음.

sqlbuilder 깃헙 저장소

profile
공부 정리 블로그

0개의 댓글