Module  java.sql.rowset
软件包  javax.sql.rowset

Interface Predicate



  • public interface Predicate
    为所有FilteredRowSet对象提供框架来描述其过滤器的标准接口。

    1.0背景

    Predicate接口是应用程序可以实现的一个标准接口,用于定义要应用于FilteredRowSet对象的过滤器。 一个FilteredRowSet对象消耗了该接口的实现,并强制执行方法evaluate定义的约束。 A FilteredRowSet对象以双向方式实施过滤器约束:它仅输出在过滤器的约束内的行; 相反,它仅插入,修改或更新在过滤器的约束内的行。

    2.0实施指引

    为了提供FilteredRowSet的谓词。 这个接口必须实现。 此时,JDBC RowSet实现(JSR-114)不指定任何标准过滤器定义。 通过为FilteredRowSet接口的参考和供应商实现定义和部署一系列过滤器的标准手段和机制,这允许出现灵活和应用程序的Predicate实现。

    示例实现将如下所示:

       public class Range implements Predicate { private int[] lo; private int[] hi; private int[] idx; public Range(int[] lo, int[] hi, int[] idx) { this.lo = lo; this.hi = hi; this.idx = idx; } public boolean evaluate(RowSet rs) { // Check the present row determine if it lies // within the filtering criteria. for (int i = 0; i < idx.length; i++) { int value; try { value = (Integer) rs.getObject(idx[i]); } catch (SQLException ex) { Logger.getLogger(Range.class.getName()).log(Level.SEVERE, null, ex); return false; } if (value < lo[i] && value > hi[i]) { // outside of filter constraints return false; } } // Within filter constraints return true; } }  

    上面的例子实现了一个简单的范围谓词。 请注意,不应提供String和基于整数索引的构造函数来实现应用程序,以提供使用列标识约定的JDBC RowSet实现应用程序。

    从以下版本开始:
    1.5
    • 方法摘要

      所有方法  接口方法  抽象方法 
      Modifier and Type 方法 描述
      boolean evaluate​(Object value, int column)
      该方法由 FilteredRowSet对象调用,以检查值是否位于使用 setFilter()方法设置的过滤条件(或存在多个约束的条件) setFilter()
      boolean evaluate​(Object value, String columnName)
      该方法由 FilteredRowSet对象调用,以检查该值是否位于使用setFilter方法设置的过滤条件之间。
      boolean evaluate​(RowSet rs)
      这个方法通常被称为一个 FilteredRowSet对象的内部方法(不是public),它控制着 RowSet对象的光标从一行移动到另一个。
    • 方法详细信息

      • evaluate

        boolean evaluate​(RowSet rs)
        此方法通常称为FilteredRowSet对象内部方法(非公开),可控制RowSet对象的光标从行移动到下一个。 另外,如果这个内部方法将光标移动到已被删除的行上,内部方法将继续使用光标,直到找到有效的行。
        参数
        rs - 要评估的 RowSet
        结果
        true如果过滤器中有更多行; 否则为false
      • evaluate

        boolean evaluate​(Object value,
                         int column)
                  throws SQLException
        该方法由一个FilteredRowSet对象调用,以检查该值是否位于使用setFilter()方法设置的过滤条件(或存在多个约束的条件) setFilter()

        FilteredRowSet对象将在内部使用此方法,同时向FilteredRowSet实例插入新行。

        参数
        value - 需要检查的 Object值,是否可以成为此 FilterRowSet对象的一部分。
        column - 一个int对象,必须与此RowSet对象中的列的SQL索引相匹配。 这必须已经传递给Predicate作为过滤列之一,而初始化一个Predicate
        结果
        true如果行值位于过滤器内; 否则为false
        异常
        SQLException - 如果列不是过滤条件的一部分
      • evaluate

        boolean evaluate​(Object value,
                         String columnName)
                  throws SQLException
        该方法由FilteredRowSet对象调用,以检查该值是否在使用setFilter方法设置的过滤条件之间。

        FilteredRowSet对象将在内部使用此方法,而将新行插入到一个FilteredRowSet实例中。

        参数
        value - 需要检查的 Object值,是否可以作为此 FilterRowSet一部分。
        columnName - 一个String对象,必须匹配此RowSet列的SQL名称,忽略大小写。 这必须已经传递给Predicate作为过滤列之一,而初始化一个Predicate
        结果
        true如果值位于过滤器内; false否则
        异常
        SQLException - 如果列不是过滤条件的一部分