Browse Source

添加 Function 参数

James 5 years ago
parent
commit
57bcc344ed

+ 15 - 2
src/main/java/com/jfinal/plugin/activerecord/builder/KeepByteAndShortModelBuilder.java

@@ -23,6 +23,7 @@ import java.sql.Types;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
 import com.jfinal.plugin.activerecord.CPI;
 import com.jfinal.plugin.activerecord.Model;
 import com.jfinal.plugin.activerecord.ModelBuilder;
@@ -41,8 +42,13 @@ public class KeepByteAndShortModelBuilder extends ModelBuilder {
 	
 	public static final KeepByteAndShortModelBuilder me = new KeepByteAndShortModelBuilder();
 	
-	@SuppressWarnings({"rawtypes", "unchecked"})
+	@SuppressWarnings({"rawtypes"})
 	public <T> List<T> build(ResultSet rs, Class<? extends Model> modelClass) throws SQLException, ReflectiveOperationException {
+		return build(rs, modelClass, null);
+	}
+	
+	@SuppressWarnings({"rawtypes", "unchecked"})
+	public <T> List<T> build(ResultSet rs, Class<? extends Model> modelClass, Function<Model, Boolean> func) throws SQLException, ReflectiveOperationException {
 		List<T> result = new ArrayList<T>();
 		ResultSetMetaData rsmd = rs.getMetaData();
 		int columnCount = rsmd.getColumnCount();
@@ -81,7 +87,14 @@ public class KeepByteAndShortModelBuilder extends ModelBuilder {
 				
 				attrs.put(labelNames[i], value);
 			}
-			result.add((T)ar);
+			
+			if (func == null) {
+				result.add((T)ar);
+			} else {
+				if ( ! func.apply(ar) ) {
+					break ;
+				}
+			}
 		}
 		return result;
 	}

+ 14 - 3
src/main/java/com/jfinal/plugin/activerecord/builder/KeepByteAndShortRecordBuilder.java

@@ -23,7 +23,7 @@ import java.sql.Types;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-
+import java.util.function.Function;
 import com.jfinal.plugin.activerecord.CPI;
 import com.jfinal.plugin.activerecord.Config;
 import com.jfinal.plugin.activerecord.ModelBuilder;
@@ -44,8 +44,12 @@ public class KeepByteAndShortRecordBuilder extends RecordBuilder {
 	
 	public static final KeepByteAndShortRecordBuilder me = new KeepByteAndShortRecordBuilder();
 	
-	@SuppressWarnings("unchecked")
 	public List<Record> build(Config config, ResultSet rs) throws SQLException {
+		return build(config, rs, null);
+	}
+	
+	@SuppressWarnings("unchecked")
+	public List<Record> build(Config config, ResultSet rs, Function<Record, Boolean> func) throws SQLException {
 		List<Record> result = new ArrayList<Record>();
 		ResultSetMetaData rsmd = rs.getMetaData();
 		int columnCount = rsmd.getColumnCount();
@@ -85,7 +89,14 @@ public class KeepByteAndShortRecordBuilder extends RecordBuilder {
 				
 				columns.put(labelNames[i], value);
 			}
-			result.add(record);
+			
+			if (func == null) {
+				result.add(record);
+			} else {
+				if ( ! func.apply(record) ) {
+					break ;
+				}
+			}
 		}
 		return result;
 	}

+ 15 - 2
src/main/java/com/jfinal/plugin/activerecord/builder/TimestampProcessedModelBuilder.java

@@ -23,6 +23,7 @@ import java.sql.Types;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
 import com.jfinal.plugin.activerecord.CPI;
 import com.jfinal.plugin.activerecord.Model;
 import com.jfinal.plugin.activerecord.ModelBuilder;
@@ -36,8 +37,13 @@ public class TimestampProcessedModelBuilder extends ModelBuilder {
 	
 	public static final TimestampProcessedModelBuilder me = new TimestampProcessedModelBuilder();
 	
-	@SuppressWarnings({"rawtypes", "unchecked"})
+	@SuppressWarnings({"rawtypes"})
 	public <T> List<T> build(ResultSet rs, Class<? extends Model> modelClass) throws SQLException, ReflectiveOperationException {
+		return build(rs, modelClass, null);
+	}
+	
+	@SuppressWarnings({"rawtypes", "unchecked"})
+	public <T> List<T> build(ResultSet rs, Class<? extends Model> modelClass, Function<Model, Boolean> func) throws SQLException, ReflectiveOperationException {
 		List<T> result = new ArrayList<T>();
 		ResultSetMetaData rsmd = rs.getMetaData();
 		int columnCount = rsmd.getColumnCount();
@@ -69,7 +75,14 @@ public class TimestampProcessedModelBuilder extends ModelBuilder {
 				
 				attrs.put(labelNames[i], value);
 			}
-			result.add((T)ar);
+			
+			if (func == null) {
+				result.add((T)ar);
+			} else {
+				if ( ! func.apply(ar) ) {
+					break ;
+				}
+			}
 		}
 		return result;
 	}

+ 14 - 2
src/main/java/com/jfinal/plugin/activerecord/builder/TimestampProcessedRecordBuilder.java

@@ -23,6 +23,7 @@ import java.sql.Types;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
 import com.jfinal.plugin.activerecord.CPI;
 import com.jfinal.plugin.activerecord.Config;
 import com.jfinal.plugin.activerecord.ModelBuilder;
@@ -38,8 +39,12 @@ public class TimestampProcessedRecordBuilder extends RecordBuilder {
 	
 	public static final TimestampProcessedRecordBuilder me = new TimestampProcessedRecordBuilder();
 	
-	@SuppressWarnings("unchecked")
 	public List<Record> build(Config config, ResultSet rs) throws SQLException {
+		return build(config, rs, null);
+	}
+	
+	@SuppressWarnings("unchecked")
+	public List<Record> build(Config config, ResultSet rs, Function<Record, Boolean> func) throws SQLException {
 		List<Record> result = new ArrayList<Record>();
 		ResultSetMetaData rsmd = rs.getMetaData();
 		int columnCount = rsmd.getColumnCount();
@@ -72,7 +77,14 @@ public class TimestampProcessedRecordBuilder extends RecordBuilder {
 				
 				columns.put(labelNames[i], value);
 			}
-			result.add(record);
+			
+			if (func == null) {
+				result.add(record);
+			} else {
+				if ( ! func.apply(record) ) {
+					break ;
+				}
+			}
 		}
 		return result;
 	}