1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.dynamic.sql;
17
18 import org.mybatis.dynamic.sql.render.RenderingContext;
19 import org.mybatis.dynamic.sql.select.SelectModel;
20 import org.mybatis.dynamic.sql.select.render.SubQueryRenderer;
21 import org.mybatis.dynamic.sql.util.Buildable;
22 import org.mybatis.dynamic.sql.util.FragmentAndParameters;
23
24 public abstract class AbstractSubselectCondition<T> implements RenderableCondition<T> {
25 private final SelectModel selectModel;
26
27 protected AbstractSubselectCondition(Buildable<SelectModel> selectModelBuilder) {
28 this.selectModel = selectModelBuilder.build();
29 }
30
31 public abstract String operator();
32
33 @Override
34 public FragmentAndParameters renderCondition(RenderingContext renderingContext, BindableColumn<T> leftColumn) {
35 return SubQueryRenderer.withSelectModel(selectModel)
36 .withRenderingContext(renderingContext)
37 .withPrefix(operator() + " (")
38 .withSuffix(")")
39 .build()
40 .render();
41 }
42 }