use of org.seasar.doma.internal.jdbc.sql.node.FromClauseNode in project doma by domaframework.
the class NodePreparedSqlBuilderTest method testBindVariableNode.
@Test
public void testBindVariableNode() {
SelectClauseNode select = new SelectClauseNode("select");
select.appendNode(OtherNode.of(" * "));
FromClauseNode from = new FromClauseNode("from");
from.appendNode(WhitespaceNode.of(" "));
from.appendNode(new WordNode("aaa"));
from.appendNode(WhitespaceNode.of(" "));
WhereClauseNode where = new WhereClauseNode("where");
where.appendNode(WhitespaceNode.of(" "));
where.appendNode(new WordNode("bbb"));
where.appendNode(OtherNode.of(" = "));
BindVariableNode variable1 = new BindVariableNode(location, "name", "/*#name*/");
variable1.setWordNode(new WordNode("'hoge'"));
where.appendNode(variable1);
where.appendNode(WhitespaceNode.of(" "));
where.appendNode(new LogicalOperatorNode("and"));
where.appendNode(WhitespaceNode.of(" "));
where.appendNode(new WordNode("ccc"));
where.appendNode(OtherNode.of(" = "));
BindVariableNode variable2 = new BindVariableNode(location, "salary", "/*#salary*/");
variable2.setWordNode(new WordNode("100"));
where.appendNode(variable2);
SelectStatementNode statement = new SelectStatementNode();
statement.setSelectClauseNode(select);
statement.setFromClauseNode(from);
statement.setWhereClauseNode(where);
AnonymousNode root = new AnonymousNode();
root.appendNode(statement);
ExpressionEvaluator evaluator = new ExpressionEvaluator();
evaluator.add("name", new Value(String.class, "hoge"));
evaluator.add("salary", new Value(BigDecimal.class, new BigDecimal(100)));
NodePreparedSqlBuilder builder = new NodePreparedSqlBuilder(config, SqlKind.SELECT, "dummyPath", evaluator, SqlLogType.FORMATTED);
PreparedSql sql = builder.build(root, Function.identity());
assertEquals("select * from aaa where bbb = ? and ccc = ?", sql.getRawSql());
assertEquals(2, sql.getParameters().size());
assertEquals("hoge", sql.getParameters().get(0).getWrapper().get());
assertEquals(new BigDecimal(100), sql.getParameters().get(1).getWrapper().get());
}
use of org.seasar.doma.internal.jdbc.sql.node.FromClauseNode in project doma by domaframework.
the class NodePreparedSqlBuilderTest method testAndNode.
@Test
public void testAndNode() {
SelectClauseNode select = new SelectClauseNode("select");
select.appendNode(OtherNode.of(" * "));
FromClauseNode from = new FromClauseNode("from");
from.appendNode(WhitespaceNode.of(" "));
from.appendNode(new WordNode("aaa"));
from.appendNode(WhitespaceNode.of(" "));
WhereClauseNode where = new WhereClauseNode("where");
IfNode ifNode1 = new IfNode(location, "true", "/*if true*/");
ifNode1.appendNode(WhitespaceNode.of(" "));
ifNode1.appendNode(new WordNode("bbb"));
ifNode1.appendNode(OtherNode.of(" = "));
ifNode1.appendNode(new WordNode("ccc"));
EndNode endNode1 = new EndNode("/*end*/");
IfBlockNode ifBlock1 = new IfBlockNode();
ifBlock1.setIfNode(ifNode1);
ifBlock1.setEndNode(endNode1);
where.appendNode(ifBlock1);
IfNode ifNode2 = new IfNode(location, "true", "/*if true*/");
ifNode2.appendNode(WhitespaceNode.of(" "));
LogicalOperatorNode and = new LogicalOperatorNode("and");
ifNode2.appendNode(and);
and.appendNode(WhitespaceNode.of(" "));
and.appendNode(new WordNode("ddd"));
and.appendNode(OtherNode.of(" = "));
and.appendNode(new WordNode("eee"));
EndNode endNode2 = new EndNode("/*end*/");
IfBlockNode ifBlock2 = new IfBlockNode();
ifBlock2.setIfNode(ifNode2);
ifBlock2.setEndNode(endNode2);
where.appendNode(ifBlock2);
SelectStatementNode statement = new SelectStatementNode();
statement.setSelectClauseNode(select);
statement.setFromClauseNode(from);
statement.setWhereClauseNode(where);
AnonymousNode root = new AnonymousNode();
root.appendNode(statement);
ExpressionEvaluator evaluator = new ExpressionEvaluator();
NodePreparedSqlBuilder builder = new NodePreparedSqlBuilder(config, SqlKind.SELECT, "dummyPath", evaluator, SqlLogType.FORMATTED);
PreparedSql sql = builder.build(statement, Function.identity());
assertEquals("select * from aaa where bbb = ccc and ddd = eee", sql.getRawSql());
}
use of org.seasar.doma.internal.jdbc.sql.node.FromClauseNode in project doma by domaframework.
the class NodePreparedSqlBuilderTest method testIfNode_false.
@Test
public void testIfNode_false() {
SelectClauseNode select = new SelectClauseNode("select");
select.appendNode(OtherNode.of(" * "));
FromClauseNode from = new FromClauseNode("from");
from.appendNode(WhitespaceNode.of(" "));
from.appendNode(new WordNode("aaa"));
from.appendNode(WhitespaceNode.of(" "));
WhereClauseNode where = new WhereClauseNode("where");
where.appendNode(WhitespaceNode.of(" "));
IfNode ifNode = new IfNode(location, "false", "/*if false*/");
ifNode.appendNode(new WordNode("bbb"));
ifNode.appendNode(OtherNode.of(" = "));
ifNode.appendNode(new WordNode("ccc"));
IfBlockNode ifBlockNode = new IfBlockNode();
ifBlockNode.setIfNode(ifNode);
ifBlockNode.setEndNode(new EndNode("/*end*/"));
where.appendNode(ifBlockNode);
SelectStatementNode statement = new SelectStatementNode();
statement.setSelectClauseNode(select);
statement.setFromClauseNode(from);
statement.setWhereClauseNode(where);
AnonymousNode root = new AnonymousNode();
root.appendNode(statement);
ExpressionEvaluator evaluator = new ExpressionEvaluator();
NodePreparedSqlBuilder builder = new NodePreparedSqlBuilder(config, SqlKind.SELECT, "dummyPath", evaluator, SqlLogType.FORMATTED);
PreparedSql sql = builder.build(statement, Function.identity());
assertEquals("select * from aaa", sql.getRawSql());
}
use of org.seasar.doma.internal.jdbc.sql.node.FromClauseNode in project doma by domaframework.
the class NodePreparedSqlBuilderTest method testElseNode.
@Test
public void testElseNode() {
SelectClauseNode select = new SelectClauseNode("select");
select.appendNode(OtherNode.of(" * "));
FromClauseNode from = new FromClauseNode("from");
from.appendNode(WhitespaceNode.of(" "));
from.appendNode(new WordNode("aaa"));
from.appendNode(WhitespaceNode.of(" "));
WhereClauseNode where = new WhereClauseNode("where");
where.appendNode(WhitespaceNode.of(" "));
IfNode ifNode = new IfNode(location, "false", "/*if false*/");
ifNode.appendNode(new WordNode("bbb"));
ifNode.appendNode(OtherNode.of(" = "));
ifNode.appendNode(new WordNode("ccc"));
ElseNode elseNode = new ElseNode("/*else*/");
elseNode.appendNode(new WordNode("ddd"));
elseNode.appendNode(OtherNode.of(" = "));
elseNode.appendNode(new WordNode("eee"));
EndNode endNode = new EndNode("/*end*/");
IfBlockNode ifBlock = new IfBlockNode();
ifBlock.setIfNode(ifNode);
ifBlock.setElseNode(elseNode);
ifBlock.setEndNode(endNode);
where.appendNode(ifBlock);
SelectStatementNode statement = new SelectStatementNode();
statement.setSelectClauseNode(select);
statement.setFromClauseNode(from);
statement.setWhereClauseNode(where);
AnonymousNode root = new AnonymousNode();
root.appendNode(statement);
ExpressionEvaluator evaluator = new ExpressionEvaluator();
NodePreparedSqlBuilder builder = new NodePreparedSqlBuilder(config, SqlKind.SELECT, "dummyPath", evaluator, SqlLogType.FORMATTED);
PreparedSql sql = builder.build(statement, Function.identity());
assertEquals("select * from aaa where ddd = eee", sql.getRawSql());
}
use of org.seasar.doma.internal.jdbc.sql.node.FromClauseNode in project doma by domaframework.
the class Mssql2008ForUpdateTransformer method visitSelectStatementNode.
@Override
public SqlNode visitSelectStatementNode(SelectStatementNode node, Void p) {
if (processed) {
return node;
}
processed = true;
StringBuilder buf = new StringBuilder(100).append("with (updlock, rowlock");
if (forUpdateType == SelectForUpdateType.NOWAIT) {
buf.append(", nowait");
}
buf.append(") ");
FromClauseNode originalFrom = node.getFromClauseNode();
FromClauseNode from = new FromClauseNode(originalFrom.getWordNode());
for (SqlNode child : originalFrom.getChildren()) {
from.appendNode(child);
}
from.appendNode(new FragmentNode(buf.toString()));
SelectStatementNode result = new SelectStatementNode();
result.setSelectClauseNode(node.getSelectClauseNode());
result.setFromClauseNode(from);
result.setWhereClauseNode(node.getWhereClauseNode());
result.setGroupByClauseNode(node.getGroupByClauseNode());
result.setHavingClauseNode(node.getHavingClauseNode());
result.setOrderByClauseNode(node.getOrderByClauseNode());
result.setOptionClauseNode(node.getOptionClauseNode());
return result;
}
Aggregations