org.redkale.source

## 接口 DataSource

- 所有已知实现类:
    DataDefaultSource, DataSourceService

      public interface DataSource

  DataSource 为数据库或内存数据库的数据源，提供类似JPA、Hibernate的接口与功能。

  详情见: https://redkale.org

- - ### 方法概要

    所有方法 实例方法 抽象方法
    限定符和类型 | 方法和说明
    --- | ---
    `<T> int` | `delete(java.lang.Class<T> clazz, FilterNode node)`
    `<T> int` | `delete(java.lang.Class<T> clazz, java.io.Serializable... ids)` 根据主键值删除数据 等价SQL: DELETE FROM WHERE {primary} IN {ids}
    `<T> int` | `delete(T... values)` 删除对象， 必须是Entity对象
    `int[]` | `directExecute(java.lang.String... sqls)` 直接本地执行SQL语句进行增删改操作，远程模式不可用 通常用于复杂的更新操作
    `void` | `directQuery(java.lang.String sql, java.util.function.Consumer<java.sql.ResultSet> consumer)` 直接本地执行SQL语句进行查询，远程模式不可用 通常用于复杂的关联查询
    `<T> boolean` | `exists(java.lang.Class<T> clazz, FilterBean bean)`
    `<T> boolean` | `exists(java.lang.Class<T> clazz, FilterNode node)`
    `<T> boolean` | `exists(java.lang.Class<T> clazz, java.io.Serializable pk)`
    `<T> T` | `find(java.lang.Class<T> clazz, FilterBean bean)`
    `<T> T` | `find(java.lang.Class<T> clazz, FilterNode node)`
    `<T> T` | `find(java.lang.Class<T> clazz, SelectColumn selects, FilterBean bean)`
    `<T> T` | `find(java.lang.Class<T> clazz, SelectColumn selects, FilterNode node)`
    `<T> T` | `find(java.lang.Class<T> clazz, SelectColumn selects, java.io.Serializable pk)`
    `<T> T` | `find(java.lang.Class<T> clazz, java.io.Serializable pk)` 根据主键获取对象
    `<T> T` | `find(java.lang.Class<T> clazz, java.lang.String column, java.io.Serializable key)`
    `java.lang.Number` | `getNumberResult(java.lang.Class entityClass, FilterFunc func, java.lang.Number defVal, java.lang.String column)`
    `java.lang.Number` | `getNumberResult(java.lang.Class entityClass, FilterFunc func, java.lang.Number defVal, java.lang.String column, FilterBean bean)`
    `java.lang.Number` | `getNumberResult(java.lang.Class entityClass, FilterFunc func, java.lang.Number defVal, java.lang.String column, FilterNode node)`
    `java.lang.Number` | `getNumberResult(java.lang.Class entityClass, FilterFunc func, java.lang.String column)`
    `java.lang.Number` | `getNumberResult(java.lang.Class entityClass, FilterFunc func, java.lang.String column, FilterBean bean)`
    `java.lang.Number` | `getNumberResult(java.lang.Class entityClass, FilterFunc func, java.lang.String column, FilterNode node)`
    `<T> void` | `insert(T... values)` 新增对象， 必须是Entity对象
    `<T,V extends java.io.Serializable> java.util.List<V>` | `queryColumnList(java.lang.String selectedColumn, java.lang.Class<T> clazz, FilterBean bean)`
    `<T,V extends java.io.Serializable> java.util.List<V>` | `queryColumnList(java.lang.String selectedColumn, java.lang.Class<T> clazz, FilterNode node)`
    `<T,V extends java.io.Serializable> java.util.List<V>` | `queryColumnList(java.lang.String selectedColumn, java.lang.Class<T> clazz, java.lang.String column, java.io.Serializable key)`
    `<T,K extends java.io.Serializable,N extends java.lang.Number> java.util.Map<K,N>` | `queryColumnMap(java.lang.Class<T> entityClass, java.lang.String keyColumn, FilterFunc func, java.lang.String funcColumn)`
    `<T,K extends java.io.Serializable,N extends java.lang.Number> java.util.Map<K,N>` | `queryColumnMap(java.lang.Class<T> entityClass, java.lang.String keyColumn, FilterFunc func, java.lang.String funcColumn, FilterBean bean)`
    `<T,K extends java.io.Serializable,N extends java.lang.Number> java.util.Map<K,N>` | `queryColumnMap(java.lang.Class<T> entityClass, java.lang.String keyColumn, FilterFunc func, java.lang.String funcColumn, FilterNode node)`
    `<T,V extends java.io.Serializable> java.util.HashSet<V>` | `queryColumnSet(java.lang.String selectedColumn, java.lang.Class<T> clazz, FilterBean bean)`
    `<T,V extends java.io.Serializable> java.util.HashSet<V>` | `queryColumnSet(java.lang.String selectedColumn, java.lang.Class<T> clazz, FilterNode node)`
    `<T,V extends java.io.Serializable> java.util.HashSet<V>` | `queryColumnSet(java.lang.String selectedColumn, java.lang.Class<T> clazz, java.lang.String column, java.io.Serializable key)` 根据指定字段值查询对象某个字段的集合
    `<T,V extends java.io.Serializable> Sheet<V>` | `queryColumnSheet(java.lang.String selectedColumn, java.lang.Class<T> clazz, Flipper flipper, FilterBean bean)` 根据指定参数查询对象某个字段的集合
    `<T,V extends java.io.Serializable> Sheet<V>` | `queryColumnSheet(java.lang.String selectedColumn, java.lang.Class<T> clazz, Flipper flipper, FilterNode node)`
    `<T> java.util.List<T>` | `queryList(java.lang.Class<T> clazz, FilterBean bean)`
    `<T> java.util.List<T>` | `queryList(java.lang.Class<T> clazz, FilterNode node)`
    `<T> java.util.List<T>` | `queryList(java.lang.Class<T> clazz, Flipper flipper, FilterBean bean)`
    `<T> java.util.List<T>` | `queryList(java.lang.Class<T> clazz, Flipper flipper, FilterNode node)`
    `<T> java.util.List<T>` | `queryList(java.lang.Class<T> clazz, Flipper flipper, java.lang.String column, java.io.Serializable key)`
    `<T> java.util.List<T>` | `queryList(java.lang.Class<T> clazz, SelectColumn selects, FilterBean bean)`
    `<T> java.util.List<T>` | `queryList(java.lang.Class<T> clazz, SelectColumn selects, FilterNode node)`
    `<T> java.util.List<T>` | `queryList(java.lang.Class<T> clazz, SelectColumn selects, Flipper flipper, FilterBean bean)`
    `<T> java.util.List<T>` | `queryList(java.lang.Class<T> clazz, SelectColumn selects, Flipper flipper, FilterNode node)`
    `<T> java.util.List<T>` | `queryList(java.lang.Class<T> clazz, java.lang.String column, java.io.Serializable key)` 根据指定字段值查询对象集合
    `<T> Sheet<T>` | `querySheet(java.lang.Class<T> clazz, Flipper flipper, FilterBean bean)` 根据指定参数查询对象某个对象的集合页
    `<T> Sheet<T>` | `querySheet(java.lang.Class<T> clazz, Flipper flipper, FilterNode node)`
    `<T> Sheet<T>` | `querySheet(java.lang.Class<T> clazz, SelectColumn selects, Flipper flipper, FilterBean bean)`
    `<T> Sheet<T>` | `querySheet(java.lang.Class<T> clazz, SelectColumn selects, Flipper flipper, FilterNode node)`
    `<T> int` | `update(T... values)` 更新对象， 必须是Entity对象
    `<T> int` | `updateColumn(java.lang.Class<T> clazz, FilterNode node, ColumnValue... values)`
    `<T> int` | `updateColumn(java.lang.Class<T> clazz, java.io.Serializable id, ColumnValue... values)`
    `<T> int` | `updateColumn(java.lang.Class<T> clazz, java.io.Serializable id, java.lang.String column, java.io.Serializable value)`
    `<T> int` | `updateColumn(java.lang.Class<T> clazz, java.lang.String column, java.io.Serializable value, FilterNode node)`
    `<T> int` | `updateColumns(T bean, FilterNode node, java.lang.String... columns)`
    `<T> int` | `updateColumns(T bean, java.lang.String... columns)`

- - ### 方法详细资料

    - #### insert

          <T> void insert(T... values)

      新增对象， 必须是Entity对象
      类型参数:
        `T` - 泛型
      参数:
        `values` - Entity对象

    - #### delete

          <T> int delete(T... values)

      删除对象， 必须是Entity对象
      类型参数:
        `T` - 泛型
      参数:
        `values` - Entity对象
      返回:
        删除的数据条数

    - #### delete

          <T> int delete(java.lang.Class<T> clazz,
                         java.io.Serializable... ids)

      根据主键值删除数据 等价SQL: DELETE FROM WHERE {primary} IN {ids}
      类型参数:
        `T` - Entity类的泛型
      参数:
        `clazz` - Entity类
        `ids` - 主键值
      返回:
        删除的数据条数

    - #### delete

          <T> int delete(java.lang.Class<T> clazz,
                         FilterNode node)

    - #### update

          <T> int update(T... values)

      更新对象， 必须是Entity对象
      类型参数:
        `T` - 泛型
      参数:
        `values` - Entity对象
      返回:
        更新的数据条数

    - #### updateColumn

          <T> int updateColumn(java.lang.Class<T> clazz,
                               java.io.Serializable id,
                               java.lang.String column,
                               java.io.Serializable value)

    - #### updateColumn

          <T> int updateColumn(java.lang.Class<T> clazz,
                               java.lang.String column,
                               java.io.Serializable value,
                               FilterNode node)

    - #### updateColumn

          <T> int updateColumn(java.lang.Class<T> clazz,
                               java.io.Serializable id,
                               ColumnValue... values)

    - #### updateColumn

          <T> int updateColumn(java.lang.Class<T> clazz,
                               FilterNode node,
                               ColumnValue... values)

    - #### updateColumns

          <T> int updateColumns(T bean,
                                java.lang.String... columns)

    - #### updateColumns

          <T> int updateColumns(T bean,
                                FilterNode node,
                                java.lang.String... columns)

    - #### getNumberResult

          java.lang.Number getNumberResult(java.lang.Class entityClass,
                                           FilterFunc func,
                                           java.lang.String column)

    - #### getNumberResult

          java.lang.Number getNumberResult(java.lang.Class entityClass,
                                           FilterFunc func,
                                           java.lang.String column,
                                           FilterBean bean)

    - #### getNumberResult

          java.lang.Number getNumberResult(java.lang.Class entityClass,
                                           FilterFunc func,
                                           java.lang.String column,
                                           FilterNode node)

    - #### getNumberResult

          java.lang.Number getNumberResult(java.lang.Class entityClass,
                                           FilterFunc func,
                                           java.lang.Number defVal,
                                           java.lang.String column)

    - #### getNumberResult

          java.lang.Number getNumberResult(java.lang.Class entityClass,
                                           FilterFunc func,
                                           java.lang.Number defVal,
                                           java.lang.String column,
                                           FilterBean bean)

    - #### getNumberResult

          java.lang.Number getNumberResult(java.lang.Class entityClass,
                                           FilterFunc func,
                                           java.lang.Number defVal,
                                           java.lang.String column,
                                           FilterNode node)

    - #### queryColumnMap

          <T,K extends java.io.Serializable,N extends java.lang.Number> java.util.Map<K,N> queryColumnMap(java.lang.Class<T> entityClass,
                                                                                                          java.lang.String keyColumn,
                                                                                                          FilterFunc func,
                                                                                                          java.lang.String funcColumn)

    - #### queryColumnMap

          <T,K extends java.io.Serializable,N extends java.lang.Number> java.util.Map<K,N> queryColumnMap(java.lang.Class<T> entityClass,
                                                                                                          java.lang.String keyColumn,
                                                                                                          FilterFunc func,
                                                                                                          java.lang.String funcColumn,
                                                                                                          FilterBean bean)

    - #### queryColumnMap

          <T,K extends java.io.Serializable,N extends java.lang.Number> java.util.Map<K,N> queryColumnMap(java.lang.Class<T> entityClass,
                                                                                                          java.lang.String keyColumn,
                                                                                                          FilterFunc func,
                                                                                                          java.lang.String funcColumn,
                                                                                                          FilterNode node)

    - #### find

          <T> T find(java.lang.Class<T> clazz,
                     java.io.Serializable pk)

      根据主键获取对象
      类型参数:
        `T` - 泛型
      参数:
        `clazz` - Entity类
        `pk` - 主键值
      返回:
        Entity对象

    - #### find

          <T> T find(java.lang.Class<T> clazz,
                     SelectColumn selects,
                     java.io.Serializable pk)

    - #### find

          <T> T find(java.lang.Class<T> clazz,
                     java.lang.String column,
                     java.io.Serializable key)

    - #### find

          <T> T find(java.lang.Class<T> clazz,
                     FilterBean bean)

    - #### find

          <T> T find(java.lang.Class<T> clazz,
                     FilterNode node)

    - #### find

          <T> T find(java.lang.Class<T> clazz,
                     SelectColumn selects,
                     FilterBean bean)

    - #### find

          <T> T find(java.lang.Class<T> clazz,
                     SelectColumn selects,
                     FilterNode node)

    - #### exists

          <T> boolean exists(java.lang.Class<T> clazz,
                             java.io.Serializable pk)

    - #### exists

          <T> boolean exists(java.lang.Class<T> clazz,
                             FilterBean bean)

    - #### exists

          <T> boolean exists(java.lang.Class<T> clazz,
                             FilterNode node)

    - #### queryColumnSet

          <T,V extends java.io.Serializable> java.util.HashSet<V> queryColumnSet(java.lang.String selectedColumn,
                                                                                 java.lang.Class<T> clazz,
                                                                                 java.lang.String column,
                                                                                 java.io.Serializable key)

      根据指定字段值查询对象某个字段的集合
      类型参数:
        `T` - Entity泛型
        `V` - 字段类型
      参数:
        `selectedColumn` - 字段名
        `clazz` - Entity类
        `column` - 过滤字段名
        `key` - 过滤字段值
      返回:
        字段值的集合

    - #### queryColumnSet

          <T,V extends java.io.Serializable> java.util.HashSet<V> queryColumnSet(java.lang.String selectedColumn,
                                                                                 java.lang.Class<T> clazz,
                                                                                 FilterBean bean)

    - #### queryColumnSet

          <T,V extends java.io.Serializable> java.util.HashSet<V> queryColumnSet(java.lang.String selectedColumn,
                                                                                 java.lang.Class<T> clazz,
                                                                                 FilterNode node)

    - #### queryColumnList

          <T,V extends java.io.Serializable> java.util.List<V> queryColumnList(java.lang.String selectedColumn,
                                                                               java.lang.Class<T> clazz,
                                                                               java.lang.String column,
                                                                               java.io.Serializable key)

    - #### queryColumnList

          <T,V extends java.io.Serializable> java.util.List<V> queryColumnList(java.lang.String selectedColumn,
                                                                               java.lang.Class<T> clazz,
                                                                               FilterBean bean)

    - #### queryColumnList

          <T,V extends java.io.Serializable> java.util.List<V> queryColumnList(java.lang.String selectedColumn,
                                                                               java.lang.Class<T> clazz,
                                                                               FilterNode node)

    - #### queryColumnSheet

          <T,V extends java.io.Serializable> Sheet<V> queryColumnSheet(java.lang.String selectedColumn,
                                                                       java.lang.Class<T> clazz,
                                                                       Flipper flipper,
                                                                       FilterBean bean)

      根据指定参数查询对象某个字段的集合
      类型参数:
        `T` - Entity泛型
        `V` - 字段类型
      参数:
        `selectedColumn` - 字段名
        `clazz` - Entity类
        `flipper` - 翻页对象
        `bean` - 过滤Bean
      返回:
        结果集合

    - #### queryColumnSheet

          <T,V extends java.io.Serializable> Sheet<V> queryColumnSheet(java.lang.String selectedColumn,
                                                                       java.lang.Class<T> clazz,
                                                                       Flipper flipper,
                                                                       FilterNode node)

    - #### queryList

          <T> java.util.List<T> queryList(java.lang.Class<T> clazz,
                                          java.lang.String column,
                                          java.io.Serializable key)

      根据指定字段值查询对象集合
      类型参数:
        `T` - Entity泛型
      参数:
        `clazz` - Entity类
        `column` - 过滤字段名
        `key` - 过滤字段值
      返回:
        Entity的List

    - #### queryList

          <T> java.util.List<T> queryList(java.lang.Class<T> clazz,
                                          FilterBean bean)

    - #### queryList

          <T> java.util.List<T> queryList(java.lang.Class<T> clazz,
                                          FilterNode node)

    - #### queryList

          <T> java.util.List<T> queryList(java.lang.Class<T> clazz,
                                          SelectColumn selects,
                                          FilterBean bean)

    - #### queryList

          <T> java.util.List<T> queryList(java.lang.Class<T> clazz,
                                          SelectColumn selects,
                                          FilterNode node)

    - #### queryList

          <T> java.util.List<T> queryList(java.lang.Class<T> clazz,
                                          Flipper flipper,
                                          java.lang.String column,
                                          java.io.Serializable key)

    - #### queryList

          <T> java.util.List<T> queryList(java.lang.Class<T> clazz,
                                          Flipper flipper,
                                          FilterBean bean)

    - #### queryList

          <T> java.util.List<T> queryList(java.lang.Class<T> clazz,
                                          Flipper flipper,
                                          FilterNode node)

    - #### queryList

          <T> java.util.List<T> queryList(java.lang.Class<T> clazz,
                                          SelectColumn selects,
                                          Flipper flipper,
                                          FilterBean bean)

    - #### queryList

          <T> java.util.List<T> queryList(java.lang.Class<T> clazz,
                                          SelectColumn selects,
                                          Flipper flipper,
                                          FilterNode node)

    - #### querySheet

          <T> Sheet<T> querySheet(java.lang.Class<T> clazz,
                                  Flipper flipper,
                                  FilterBean bean)

      根据指定参数查询对象某个对象的集合页

      类型参数:
        `T` - Entity泛型
      参数:
        `clazz` - Entity类
        `flipper` - 翻页对象
        `bean` - 过滤Bean
      返回:
        Entity的Sheet

    - #### querySheet

          <T> Sheet<T> querySheet(java.lang.Class<T> clazz,
                                  Flipper flipper,
                                  FilterNode node)

    - #### querySheet

          <T> Sheet<T> querySheet(java.lang.Class<T> clazz,
                                  SelectColumn selects,
                                  Flipper flipper,
                                  FilterBean bean)

    - #### querySheet

          <T> Sheet<T> querySheet(java.lang.Class<T> clazz,
                                  SelectColumn selects,
                                  Flipper flipper,
                                  FilterNode node)

    - #### directQuery

          void directQuery(java.lang.String sql,
                           java.util.function.Consumer<java.sql.ResultSet> consumer)

      直接本地执行SQL语句进行查询，远程模式不可用 通常用于复杂的关联查询
      参数:
        `sql` - SQL语句
        `consumer` - 回调函数

    - #### directExecute

          int[] directExecute(java.lang.String... sqls)

      直接本地执行SQL语句进行增删改操作，远程模式不可用 通常用于复杂的更新操作
      参数:
        `sqls` - SQL语句
      返回:
        结果数组