ソースを参照

forDbUpdate 方法添加 modifyFlag 支持

James 3 年 前
コミット
1be7d8d0a9

+ 11 - 4
src/main/java/com/jfinal/plugin/activerecord/dialect/InformixDialect.java

@@ -1,14 +1,15 @@
 package com.jfinal.plugin.activerecord.dialect;
+import com.jfinal.plugin.activerecord.CPI;
 import com.jfinal.plugin.activerecord.Record;
 import com.jfinal.plugin.activerecord.Table;
-import com.jfinal.plugin.activerecord.dialect.Dialect;
-
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+
 public class InformixDialect extends Dialect {
+	
     public String forTableBuilderDoBuild(String tableName) {
         return "select * from " + tableName + " where 1 = 2";
     }
@@ -135,11 +136,14 @@ public class InformixDialect extends Dialect {
     public void forDbUpdate(String tableName, String[] pKeys, Object[] ids, Record record, StringBuilder sql, List<Object> paras) {
         tableName = tableName.trim();
         trimPrimaryKeys(pKeys);
+        
+        // Record 新增支持 modifyFlag
+     	Set<String> modifyFlag = CPI.getModifyFlag(record);
 
         sql.append("update ").append(tableName).append(" set ");
         for (Map.Entry<String, Object> e: record.getColumns().entrySet()) {
             String colName = e.getKey();
-            if (!isPrimaryKey(colName, pKeys)) {
+            if (modifyFlag.contains(colName) && !isPrimaryKey(colName, pKeys)) {
                 if (paras.size() > 0) {
                     sql.append(", ");
                 }
@@ -182,4 +186,7 @@ public class InformixDialect extends Dialect {
     public void fillStatement(PreparedStatement pst, Object... paras) throws SQLException {
         fillStatementHandleDateType(pst, paras);
     }
-}
+}
+
+
+