MyBatis | 프로그램에서 SQL을 동적으로 생성 | 각 메소드의 사용법에 대해
SELECT
new SQL() {{
SELECT("foo");
SELECT("bar");
SELECT("fizz, buzz");
FROM("foo_table");
}};
SELECT foo, bar, fizz, buzz FROM foo_table
- 연속하여 작성하면, 각 항목을 쉼표로 마음대로 구분된다.
- 명시적으로 쉼표로 구분된 문자열 전달도 된다.
- 끝에 불필요한 쉼표가 있는 경우, 제거해 주지 않는다.
FROM
new SQL() {{
SELECT("*");
FROM("foo_table");
FROM("bar_table");
}};
SELECT * FROM foo_table, bar_table
- FROM을 연속하여 작성할 경우, 쉼표 구분으로 FROM 절이 열거된다.
WHERE
new SQL() {{
SELECT("*");
FROM("foo_table");
WHERE("foo = ?");
WHERE("bar = ?");
AND();
WHERE("fizz = ?");
WHERE("buzz = ?");
OR();
WHERE("hoge = ?");
WHERE("fuga = ?");
}};
SELECT *
FROM foo_table
WHERE (
foo = ?
AND bar = ?
) AND (
fizz = ?
AND buzz = ?
) OR (
hoge = ?
AND fuga = ?
)
- WHERE() 메소드로 WHERE 절을 생성할 수 있다.
- WHERE() 메소드를 연속하여 작성하면 AND 조건으로 연결된다.
- AND() 및 OR() 메소드를 사용하면 AND, OR로 연결할 수 있다.
INNER_JOIN
new SQL() {{
SELECT("*");
FROM("foo_table");
INNER_JOIN("bar_table on bar_table.id = foo_table.bar_id");
INNER_JOIN("fizz_table on fizz_table.id = bar_table.fizz_id");
}};
SELECT *
FROM foo_table
INNER JOIN bar_table
on bar_table.id = foo_table.bar_id
INNER JOIN fizz_table
on fizz_table.id = bar_table.fizz_id
- INNER_JOIN() 메소드으로 INNER JOIN 절을 추가할 수 있다.
- 조인 조건 문자열( on~)을 작성해야 한다.
ORDER_BY
new SQL() {{
SELECT("*");
FROM("foo_table");
ORDER_BY("foo");
ORDER_BY("bar desc");
}};
SELECT * FROM foo_table ORDER BY foo, bar desc
- ORDER_BY() 메소드로 ORDER BY 절을 생성할 수 있다.
- 연속하여 작성되면 자동으로 쉼표로 구분된다.
GROUP_BY
new SQL() {{
SELECT("foo, bar");
FROM("foo_table");
GROUP_BY("foo");
GROUP_BY("bar");
}};
SELECT foo, bar FROM foo_table GROUP BY foo, bar
- GROUP_BY() 메소드로 GROUP BY 절을 생성할 수 있다.
- 연속하여 작성되면 자동으로 쉼표로 구분된다.
HAVING
new SQL() {{
SELECT("foo, count(*)");
FROM("foo_table");
GROUP_BY("foo");
HAVING("0 < count(*)");
HAVING("count(*) < 100");
}};
SELECT foo
,count(*)
FROM foo_table
GROUP BY foo
HAVING (
0 < count(foo)
AND count(foo) < 100
)
- HAVING() 메소드로 HAVING 절을 생성할 수 있다.
- WHERE()와 같은 동작을 한다 (연속하여 작성하면 AND로 연결된다).
INSERT_INTO, VALUES
new SQL() {{
INSERT_INTO("foo_table");
VALUES("foo_value", "#{foo_value}");
VALUES("fizz_value, buzz_value", "#{fizz_value}, #{buzz_value}");
}};
INSERT INTO foo_table (foo_value, fizz_value, buzz_value) VALUES (?, ?, ?)
- INSERT_INTO() 메소드로 INSERT 문을 생성할 수 있다.
- VALUES() 메소드로 등록할 항목을 정의할 수 있다.
- 첫 번째 인수에는 설정하는 항목의 이름을 작성하고
- 두 번째 인수에는 VALUES 절에서 지정한 값을 전달한다.
- 여러 설명하면 자동으로 쉼표로 구분된다.
UPDATE, SET
new SQL() {{
UPDATE("foo_table");
SET("foo_value = #{foo_value}");
SET("bar_value = #{bar_value}");
WHERE("id = #{id}");
}};
UPDATE foo_table SET foo_value = ?, bar_value = ? WHERE (id = ?)
- UPDATE() 메소드에서 UPDATE 문을 생성할 수 있다.
- SET() 메소드에서 SET 절을 생성할 수 있다.
- 연속하여 작성되면 자동으로 쉼표로 구분된다.
DELETE_FROM
new SQL() {{
DELETE_FROM("foo_table");
WHERE("id = #{id}");
}};
DELETE FROM foo_table WHERE (id = ?)
- DELETE_FROM() 메소드로 DELETE 문을 생성할 수 있다.
최종 수정 : 2021-08-26