Przeglądaj źródła

删除了循环save 改为jdbcTemplate.batchUpdate

wangshuai 4 lat temu
rodzic
commit
b75ba29872

+ 31 - 7
magic-api/src/main/java/org/ssssssss/magicapi/modules/SQLModule.java

@@ -60,12 +60,11 @@ public class SQLModule extends HashMap<String, SQLModule> implements MagicModule
 
 	private String cacheName;
 
-	private Environment environment;
-
 	private List<SQLInterceptor> sqlInterceptors;
 
 	private long ttl;
-
+	private String logicDeleteColumn;
+	private String logicDeleteValue;
 	public SQLModule() {
 
 	}
@@ -134,12 +133,20 @@ public class SQLModule extends HashMap<String, SQLModule> implements MagicModule
 		this.ttl = ttl;
 	}
 
-	public void setEnvironment(Environment environment) {
-		this.environment = environment;
+	public String getLogicDeleteColumn() {
+		return logicDeleteColumn;
+	}
+
+	public void setLogicDeleteColumn(String logicDeleteColumn) {
+		this.logicDeleteColumn = logicDeleteColumn;
+	}
+
+	public String getLogicDeleteValue() {
+		return logicDeleteValue;
 	}
 
-	public Environment getEnvironment() {
-		return environment;
+	public void setLogicDeleteValue(String logicDeleteValue) {
+		this.logicDeleteValue = logicDeleteValue;
 	}
 
 	protected SqlCache getSqlCache() {
@@ -165,6 +172,8 @@ public class SQLModule extends HashMap<String, SQLModule> implements MagicModule
 		sqlModule.setResultProvider(this.resultProvider);
 		sqlModule.setDialectAdapter(this.dialectAdapter);
 		sqlModule.setSqlInterceptors(this.sqlInterceptors);
+		sqlModule.setLogicDeleteValue(this.logicDeleteValue);
+		sqlModule.setLogicDeleteColumn(this.logicDeleteColumn);
 		return sqlModule;
 	}
 
@@ -329,6 +338,21 @@ public class SQLModule extends HashMap<String, SQLModule> implements MagicModule
 			this.sqlCache.delete(this.cacheName);
 		}
 	}
+    /**
+     * 插入并返回主键
+     */
+    @Comment("批量执行insert操作,返回插入主键数组")
+    public int[] batchInsert(@Comment("`SQL`语句") String sql,@Comment("参数")List<Object[]> list) {
+        return dataSourceNode.getJdbcTemplate().batchUpdate(sql,list);
+    }
+
+	/**
+	 * 插入并返回主键
+	 */
+	@Comment("批量执行insert操作,返回插入主键数组")
+	public int[] batchInsert(@Comment("`SQL`语句") String[] sqls) {
+		return dataSourceNode.getJdbcTemplate().batchUpdate(sqls);
+	}
 
 	@UnableCall
 	public Object insert(BoundSql boundSql, String primary) {

+ 2 - 31
magic-api/src/main/java/org/ssssssss/magicapi/modules/table/NamedTable.java

@@ -41,8 +41,8 @@ public class NamedTable {
         this.tableName = tableName;
         this.sqlModule = sqlModule;
         this.rowMapColumnMapper = rowMapColumnMapper;
-        this.logicDeleteColumn =sqlModule.getEnvironment().getProperty("magic-api.crud.logic-delete-column","is_valid");
-        this.logicDeleteValue =sqlModule.getEnvironment().getProperty("magic-api.crud.logic-delete-value","0");
+        this.logicDeleteColumn =sqlModule.getLogicDeleteColumn();
+        this.logicDeleteValue =sqlModule.getLogicDeleteValue();
     }
 
     @Comment("设置主键名,update时使用")
@@ -208,17 +208,6 @@ public class NamedTable {
         }
         return insert(data);
     }
-
-    @Comment("保存到表中,当主键有值时则修改,否则插入")
-    public Object saveAll(@Comment("各项列和值") List<Map<String, Object>> data) {
-        if (StringUtils.isBlank(this.primary)) {
-            throw new MagicAPIException("请设置主键");
-        }
-        if (CollectionUtils.isEmpty(data)) {
-            throw new MagicAPIException("操作对象不能为空");
-        }
-        return batchSaveOrUpdate(data);
-    }
     @Comment("保存到表中,当主键有值时则修改,否则插入")
     public Object save(boolean beforeQuery) {
         return this.save(null, beforeQuery);
@@ -229,14 +218,7 @@ public class NamedTable {
         return this.save(data, false);
     }
 
-    @Comment("执行插入,返回主键")
-    public Object[] batchSaveOrUpdate(@Comment("各项列和值") List<Map<String, Object>> list) {
-        if (CollectionUtils.isEmpty(list)) {
-            return null;
-        }
-        return list.stream().map(item -> save(item)).collect(Collectors.toList()).toArray();
 
-    }
 
     @Comment("执行`select`查询")
     public List<Map<String, Object>> select() {
@@ -332,16 +314,5 @@ public class NamedTable {
         return update(data, false);
     }
 
-    @Comment("执行updateAll语句")
-    public Object[] updateAll(@Comment("各项列和值") List<Map<String, Object>> list) {
-        return updateAll(list, false);
-    }
 
-    @Comment("执行updateAll语句")
-    public Object[] updateAll(@Comment("各项列和值") List<Map<String, Object>> list, @Comment("是否更新空值字段") boolean isUpdateBlank) {
-        if (CollectionUtils.isEmpty(list)) {
-            throw new MagicAPIException("操作对象不能为空");
-        }
-        return list.stream().map(item -> update(item, isUpdateBlank)).collect(Collectors.toList()).toArray();
-    }
 }