SqlTemplate.java
package com.github.mygreen.splate;
import com.github.mygreen.splate.node.Node;
import com.github.mygreen.splate.node.NodeProcessContext;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* パースしたSQLテンプレート情報を保持します。
*
*
* @version 0.2
* @author T.TSUCHIE
*
*/
@RequiredArgsConstructor
public class SqlTemplate {
/**
* パースされたSQL。
* <p>正規化によりトリムや最後のセミコロン({@literal ;})が削除されたものです。</p>
*/
@Getter
private final String sql;
/**
* SQLノード
*/
@Getter
private final Node node;
/**
* SQLテンプレートを評価します。
*
* @param templateContext SQLテンプレートに渡すコンテキスト。
* @return SQLテンプレートを評価した結果。
*/
public ProcessResult process(final SqlTemplateContext<?> templateContext) {
final NodeProcessContext processContext = new NodeProcessContext(templateContext);
processContext.setParsedSql(sql);
// SQLテンプレートを評価します。
node.accept(processContext);
return new ProcessResult(processContext.getProcessedSql(), processContext.getBindParams());
}
}