From 2c8863192de22b2d709053b38a70708afc89d7d8 Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 8 Jun 2015 00:14:46 +0800 Subject: [PATCH] improved sqlbuilder --- .../sql/builder/impl/SQLBuilderImpl.java | 4 +-- .../builder/impl/SQLUpdateBuilderImpl.java | 25 ++++++++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/builder/impl/SQLBuilderImpl.java b/src/main/java/com/alibaba/druid/sql/builder/impl/SQLBuilderImpl.java index ffa69a272d..df4f67ce7b 100644 --- a/src/main/java/com/alibaba/druid/sql/builder/impl/SQLBuilderImpl.java +++ b/src/main/java/com/alibaba/druid/sql/builder/impl/SQLBuilderImpl.java @@ -22,12 +22,10 @@ import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr; import com.alibaba.druid.sql.ast.expr.SQLNullExpr; import com.alibaba.druid.sql.ast.expr.SQLNumberExpr; import com.alibaba.druid.sql.builder.SQLBuilder; -import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlBooleanExpr; -import com.alibaba.druid.util.JdbcConstants; public class SQLBuilderImpl implements SQLBuilder { - protected SQLExpr toSQLExpr(Object obj, String dbType) { + public static SQLExpr toSQLExpr(Object obj, String dbType) { if (obj == null) { return new SQLNullExpr(); } diff --git a/src/main/java/com/alibaba/druid/sql/builder/impl/SQLUpdateBuilderImpl.java b/src/main/java/com/alibaba/druid/sql/builder/impl/SQLUpdateBuilderImpl.java index 45c966f268..4bd37b4e18 100644 --- a/src/main/java/com/alibaba/druid/sql/builder/impl/SQLUpdateBuilderImpl.java +++ b/src/main/java/com/alibaba/druid/sql/builder/impl/SQLUpdateBuilderImpl.java @@ -16,6 +16,7 @@ package com.alibaba.druid.sql.builder.impl; import java.util.List; +import java.util.Map; import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLExpr; @@ -32,7 +33,7 @@ import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGUpdateStatement; import com.alibaba.druid.sql.dialect.sqlserver.ast.stmt.SQLServerUpdateStatement; import com.alibaba.druid.util.JdbcConstants; -public class SQLUpdateBuilderImpl implements SQLUpdateBuilder { +public class SQLUpdateBuilderImpl extends SQLBuilderImpl implements SQLUpdateBuilder { private SQLUpdateStatement stmt; private String dbType; @@ -126,6 +127,28 @@ public class SQLUpdateBuilderImpl implements SQLUpdateBuilder { return this; } + + public SQLUpdateBuilderImpl setValue(Map values) { + for (Map.Entry entry : values.entrySet()) { + setValue(entry.getKey(), entry.getValue()); + } + + return this; + } + + public SQLUpdateBuilderImpl setValue(String column, Object value) { + SQLUpdateStatement update = getSQLUpdateStatement(); + + SQLExpr columnExpr = SQLUtils.toSQLExpr(column, dbType); + SQLExpr valueExpr = toSQLExpr(value, dbType); + + SQLUpdateSetItem item = new SQLUpdateSetItem(); + item.setColumn(columnExpr); + item.setValue(valueExpr); + update.addItem(item); + + return this; + } public SQLUpdateStatement getSQLUpdateStatement() { if (stmt == null) {