Browse Source

Merge branch 'master' into jfinal-java8

James 8 years ago
parent
commit
4bd391558e

+ 8 - 0
src/main/java/com/jfinal/plugin/activerecord/dialect/Dialect.java

@@ -276,6 +276,10 @@ public abstract class Dialect {
 				pst.setDate(i + 1, (java.sql.Date)value);
 			} else if (value instanceof java.sql.Timestamp) {
 				pst.setTimestamp(i + 1, (java.sql.Timestamp)value);
+			} else if (value instanceof java.util.Date) {	// 该分支放在最后,否则另外两项将无意义
+				// Oracle、SqlServer 中的 TIMESTAMP、DATE 支持 new Date() 给值
+				java.util.Date d = (java.util.Date)value;
+				pst.setTimestamp(i + 1, new java.sql.Timestamp(d.getTime()));
 			} else {
 				pst.setObject(i + 1, value);
 			}
@@ -292,6 +296,10 @@ public abstract class Dialect {
 				pst.setDate(i + 1, (java.sql.Date)value);
 			} else if (value instanceof java.sql.Timestamp) {
 				pst.setTimestamp(i + 1, (java.sql.Timestamp)value);
+			} else if (value instanceof java.util.Date) {	// 该分支放在最后,否则另外两项将无意义
+				// Oracle、SqlServer 中的 TIMESTAMP、DATE 支持 new Date() 给值
+				java.util.Date d = (java.util.Date)value;
+				pst.setTimestamp(i + 1, new java.sql.Timestamp(d.getTime()));
 			} else {
 				pst.setObject(i + 1, value);
 			}

+ 2 - 30
src/main/java/com/jfinal/plugin/activerecord/dialect/SqlServerDialect.java

@@ -199,39 +199,11 @@ public class SqlServerDialect extends Dialect {
 	}
 	
 	public void fillStatement(PreparedStatement pst, List<Object> paras) throws SQLException {
-		for (int i=0, size=paras.size(); i<size; i++) {
-			Object value = paras.get(i);
-			if (value instanceof java.sql.Date) {
-				pst.setDate(i + 1, (java.sql.Date)value);
-			} else if (value instanceof java.sql.Timestamp) {
-				pst.setTimestamp(i + 1, (java.sql.Timestamp)value);
-			} else if (value instanceof java.util.Date) {
-				// 相对于 Dialect 中多出来的一个 if 分支
-				// issue: http://www.jfinal.com/feedback/2667#replyContent
-				java.util.Date d = (java.util.Date)value;
-				pst.setTimestamp(i + 1, new java.sql.Timestamp(d.getTime()));
-			} else {
-				pst.setObject(i + 1, value);
-			}
-		}
+		fillStatementHandleDateType(pst, paras);
 	}
 	
 	public void fillStatement(PreparedStatement pst, Object... paras) throws SQLException {
-		for (int i=0; i<paras.length; i++) {
-			Object value = paras[i];
-			if (value instanceof java.sql.Date) {
-				pst.setDate(i + 1, (java.sql.Date)value);
-			} else if (value instanceof java.sql.Timestamp) {
-				pst.setTimestamp(i + 1, (java.sql.Timestamp)value);
-			} else if (value instanceof java.util.Date) {
-				// 相对于 Dialect 中多出来的一个 if 分支
-				// issue: http://www.jfinal.com/feedback/2667#replyContent
-				java.util.Date d = (java.util.Date)value;
-				pst.setTimestamp(i + 1, new java.sql.Timestamp(d.getTime()));
-			} else {
-				pst.setObject(i + 1, value);
-			}
-		}
+		fillStatementHandleDateType(pst, paras);
 	}
 }