문제

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로 그것을하는 방법을 찾지 못했습니다.

도움이 되었습니까?

해결책

Dynamic Select SQL 문 ) :

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);
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top