From 8d3523c12255b43c22762ab0eae150dbed8201a2 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 24 Jun 2013 18:44:13 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=B8=BA=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=B7=BB=E5=8A=A0=E6=97=A5=E6=9C=9F=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E5=87=BD=E6=95=B0=20=E6=94=AF=E6=8C=81mysql=E5=92=8Co?= =?UTF-8?q?racle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/alibaba/druid/util/JdbcUtils.java | 33 +++++++++++++++++++ .../druid/bvt/utils/JdbcUtilsTest.java | 9 +++++ 2 files changed, 42 insertions(+) diff --git a/src/main/java/com/alibaba/druid/util/JdbcUtils.java b/src/main/java/com/alibaba/druid/util/JdbcUtils.java index 8aa458ae1d..87b55963d9 100644 --- a/src/main/java/com/alibaba/druid/util/JdbcUtils.java +++ b/src/main/java/com/alibaba/druid/util/JdbcUtils.java @@ -682,4 +682,37 @@ public final class JdbcUtils implements JdbcConstants { return sql.toString(); } + + + /** + * @author owenludong.lud + * @param columnName + * @param tableAlias + * @param pattern if pattern is null,it will be set {%Y-%m-%d %H:%i:%s} as mysql default value and set {yyyy-mm-dd hh24:mi:ss} as oracle default value + * @param dbType {@link JdbcConstants} if dbType is null ,it will be set the mysql as a default value + */ + public static String formatColumnToDateType(String columnName,String tableAlias,String pattern,String dbType){ + StringBuilder sql = new StringBuilder(); + if(!StringUtils.isEmpty(columnName)){ + if(StringUtils.isEmpty(dbType)) dbType = JdbcConstants.MYSQL; + String formatMethod = ""; + if(MYSQL.equalsIgnoreCase(dbType)){ + formatMethod = "STR_TO_DATE"; + if(StringUtils.isEmpty(pattern)) pattern = "%Y-%m-%d %H:%i:%s"; + }else if(ORACLE.equalsIgnoreCase(dbType)){ + formatMethod = "TO_DATE"; + if(StringUtils.isEmpty(pattern)) pattern = "yyyy-mm-dd hh24:mi:ss"; + }else{ + //expand date's handle method for other database + } + sql.append(formatMethod).append("("); + if(!StringUtils.isEmpty(tableAlias)) + sql.append(tableAlias).append("."); + sql.append(columnName).append(","); + sql.append("'"); + sql.append(pattern); + sql.append("')"); + } + return sql.toString(); + } } diff --git a/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java b/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java index 739da78143..2296e36b67 100644 --- a/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java +++ b/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java @@ -23,6 +23,7 @@ import junit.framework.Assert; import junit.framework.TestCase; import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.util.JdbcConstants; import com.alibaba.druid.util.JdbcUtils; public class JdbcUtilsTest extends TestCase { @@ -79,4 +80,12 @@ public class JdbcUtilsTest extends TestCase { Assert.assertEquals(0, list.size()); } } + + public void test_formatColumnToDateType(){ + String colunExp = JdbcUtils.formatColumnToDateType("gmt_create","oo","",JdbcConstants.ORACLE); + Assert.assertEquals("TO_DATE(oo.gmt_create,'yyyy-mm-dd hh24:mi:ss')", colunExp); + + String colunExp2 = JdbcUtils.formatColumnToDateType("gmt_create","oo","",JdbcConstants.MYSQL); + Assert.assertEquals("STR_TO_DATE(oo.gmt_create,'%Y-%m-%d %H:%i:%s')", colunExp2); + } } From 203f9bb9903f4b4ddb589c23ca1a0b66db6f0244 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 24 Jun 2013 19:22:59 +0800 Subject: [PATCH 2/3] =?UTF-8?q?formatColumnToDateType=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=90=8D=E5=AD=97=E5=8F=98=E6=9B=B4=E4=B8=BAformatStrToDateCol?= =?UTF-8?q?umn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/alibaba/druid/util/JdbcUtils.java | 2 +- src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/alibaba/druid/util/JdbcUtils.java b/src/main/java/com/alibaba/druid/util/JdbcUtils.java index 87b55963d9..5bda08f6c3 100644 --- a/src/main/java/com/alibaba/druid/util/JdbcUtils.java +++ b/src/main/java/com/alibaba/druid/util/JdbcUtils.java @@ -691,7 +691,7 @@ public final class JdbcUtils implements JdbcConstants { * @param pattern if pattern is null,it will be set {%Y-%m-%d %H:%i:%s} as mysql default value and set {yyyy-mm-dd hh24:mi:ss} as oracle default value * @param dbType {@link JdbcConstants} if dbType is null ,it will be set the mysql as a default value */ - public static String formatColumnToDateType(String columnName,String tableAlias,String pattern,String dbType){ + public static String formatStrToDateColumn(String columnName,String tableAlias,String pattern,String dbType){ StringBuilder sql = new StringBuilder(); if(!StringUtils.isEmpty(columnName)){ if(StringUtils.isEmpty(dbType)) dbType = JdbcConstants.MYSQL; diff --git a/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java b/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java index 2296e36b67..0ce045afbe 100644 --- a/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java +++ b/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java @@ -82,10 +82,10 @@ public class JdbcUtilsTest extends TestCase { } public void test_formatColumnToDateType(){ - String colunExp = JdbcUtils.formatColumnToDateType("gmt_create","oo","",JdbcConstants.ORACLE); + String colunExp = JdbcUtils.formatStrToDateColumn("gmt_create","oo","",JdbcConstants.ORACLE); Assert.assertEquals("TO_DATE(oo.gmt_create,'yyyy-mm-dd hh24:mi:ss')", colunExp); - String colunExp2 = JdbcUtils.formatColumnToDateType("gmt_create","oo","",JdbcConstants.MYSQL); + String colunExp2 = JdbcUtils.formatStrToDateColumn("gmt_create","oo","",JdbcConstants.MYSQL); Assert.assertEquals("STR_TO_DATE(oo.gmt_create,'%Y-%m-%d %H:%i:%s')", colunExp2); } } From 4f9182274b7f1bef5b3eceb71eca9876499ddf0f Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 24 Jun 2013 19:58:32 +0800 Subject: [PATCH 3/3] Signed-off-by: owenludong --- .../java/com/alibaba/druid/sql/SQLUtils.java | 36 +++++++++++++++++++ .../com/alibaba/druid/util/JdbcUtils.java | 33 ----------------- .../druid/bvt/utils/JdbcUtilsTest.java | 11 +----- 3 files changed, 37 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/SQLUtils.java b/src/main/java/com/alibaba/druid/sql/SQLUtils.java index f7413ba42c..23b2d81d4c 100644 --- a/src/main/java/com/alibaba/druid/sql/SQLUtils.java +++ b/src/main/java/com/alibaba/druid/sql/SQLUtils.java @@ -40,6 +40,9 @@ import com.alibaba.druid.sql.visitor.SchemaStatVisitor; import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; import com.alibaba.druid.util.JdbcUtils; +import com.alibaba.druid.util.JdbcConstants; +import com.alibaba.druid.util.StringUtils; + public class SQLUtils { @@ -239,4 +242,37 @@ public class SQLUtils { } return stmtList; } + + /** + * @author owenludong.lud + * @param columnName + * @param tableAlias + * @param pattern if pattern is null,it will be set {%Y-%m-%d %H:%i:%s} as mysql default value and set {yyyy-mm-dd hh24:mi:ss} as oracle default value + * @param dbType {@link JdbcConstants} if dbType is null ,it will be set the mysql as a default value + */ + public static String buildToDate(String columnName,String tableAlias,String pattern,String dbType){ + StringBuilder sql = new StringBuilder(); + if(StringUtils.isEmpty(columnName)) + return ""; + if(StringUtils.isEmpty(dbType)) dbType = JdbcConstants.MYSQL; + String formatMethod = ""; + if(JdbcConstants.MYSQL.equalsIgnoreCase(dbType)){ + formatMethod = "STR_TO_DATE"; + if(StringUtils.isEmpty(pattern)) pattern = "%Y-%m-%d %H:%i:%s"; + }else if(JdbcConstants.ORACLE.equalsIgnoreCase(dbType)){ + formatMethod = "TO_DATE"; + if(StringUtils.isEmpty(pattern)) pattern = "yyyy-mm-dd hh24:mi:ss"; + }else{ + return ""; + //expand date's handle method for other database + } + sql.append(formatMethod).append("("); + if(!StringUtils.isEmpty(tableAlias)) + sql.append(tableAlias).append("."); + sql.append(columnName).append(","); + sql.append("'"); + sql.append(pattern); + sql.append("')"); + return sql.toString(); + } } diff --git a/src/main/java/com/alibaba/druid/util/JdbcUtils.java b/src/main/java/com/alibaba/druid/util/JdbcUtils.java index 5bda08f6c3..8aa458ae1d 100644 --- a/src/main/java/com/alibaba/druid/util/JdbcUtils.java +++ b/src/main/java/com/alibaba/druid/util/JdbcUtils.java @@ -682,37 +682,4 @@ public final class JdbcUtils implements JdbcConstants { return sql.toString(); } - - - /** - * @author owenludong.lud - * @param columnName - * @param tableAlias - * @param pattern if pattern is null,it will be set {%Y-%m-%d %H:%i:%s} as mysql default value and set {yyyy-mm-dd hh24:mi:ss} as oracle default value - * @param dbType {@link JdbcConstants} if dbType is null ,it will be set the mysql as a default value - */ - public static String formatStrToDateColumn(String columnName,String tableAlias,String pattern,String dbType){ - StringBuilder sql = new StringBuilder(); - if(!StringUtils.isEmpty(columnName)){ - if(StringUtils.isEmpty(dbType)) dbType = JdbcConstants.MYSQL; - String formatMethod = ""; - if(MYSQL.equalsIgnoreCase(dbType)){ - formatMethod = "STR_TO_DATE"; - if(StringUtils.isEmpty(pattern)) pattern = "%Y-%m-%d %H:%i:%s"; - }else if(ORACLE.equalsIgnoreCase(dbType)){ - formatMethod = "TO_DATE"; - if(StringUtils.isEmpty(pattern)) pattern = "yyyy-mm-dd hh24:mi:ss"; - }else{ - //expand date's handle method for other database - } - sql.append(formatMethod).append("("); - if(!StringUtils.isEmpty(tableAlias)) - sql.append(tableAlias).append("."); - sql.append(columnName).append(","); - sql.append("'"); - sql.append(pattern); - sql.append("')"); - } - return sql.toString(); - } } diff --git a/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java b/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java index 0ce045afbe..eb8661b71c 100644 --- a/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java +++ b/src/test/java/com/alibaba/druid/bvt/utils/JdbcUtilsTest.java @@ -23,7 +23,6 @@ import junit.framework.Assert; import junit.framework.TestCase; import com.alibaba.druid.pool.DruidDataSource; -import com.alibaba.druid.util.JdbcConstants; import com.alibaba.druid.util.JdbcUtils; public class JdbcUtilsTest extends TestCase { @@ -79,13 +78,5 @@ public class JdbcUtilsTest extends TestCase { List> list = JdbcUtils.executeQuery(dataSource, "select * from user"); Assert.assertEquals(0, list.size()); } - } - - public void test_formatColumnToDateType(){ - String colunExp = JdbcUtils.formatStrToDateColumn("gmt_create","oo","",JdbcConstants.ORACLE); - Assert.assertEquals("TO_DATE(oo.gmt_create,'yyyy-mm-dd hh24:mi:ss')", colunExp); - - String colunExp2 = JdbcUtils.formatStrToDateColumn("gmt_create","oo","",JdbcConstants.MYSQL); - Assert.assertEquals("STR_TO_DATE(oo.gmt_create,'%Y-%m-%d %H:%i:%s')", colunExp2); - } + } }