MyBatis와의 "슈퍼 동적"쿼리
문제
MyBatis로 플라이에 SQL 쿼리를 만들 수있는 방법이 있습니까?concretize : runtime에서 쿼리를 만들어야합니다.
with dummy (id) as (
values (#{rangeEnd}) union all
select id - 1 from dummy where id - 1 >= #{rangeStart}
).......
.
두 번째 부분은 매개 변수로 사용할 수 있지만 쿼리를 시도 할 때 예외를 얻을 때 :
[SQL0584] NULL or parameter marker in VALUES not allowed.
.
일반 JDBC를 사용하면 MessageFormat
를 사용합니다.
PreparedStatement ps = connection.prepareStatement(
MessageFormat.format(MY_QUERY, currentRange.getRangeEnd()))
.
,하지만 MyBatis로 그것을하는 방법을 찾지 못했습니다.
해결책
with dummy (id) as ( values (${rangeEnd}) union all select id - 1 from dummy where id - 1 >= #{rangeStart} )........
다른 팁
@SelectProvider
주석을 사용 :
public interface SqlMapper {
static class PureSqlProvider {
public String sql(String sql) {
// Create your query here
return sql;
}
}
@SelectProvider(type = PureSqlProvider.class, method = "sql")
public List<Dummy> select(String sql);
}
. 제휴하지 않습니다 StackOverflow