Module bus.mapper

Interface Fn<T,R>

Type Parameters:
T - 实体类类型
R - 返回值类型
All Superinterfaces:
Function<T,R>, Serializable
All Known Implementing Classes:
Fn.FnName, Fn.FnType

public interface Fn<T,R> extends Function<T,R>, Serializable
方法引用工具接口,用于获取方法引用对应的字段和列信息
Since:
Java 17+
Author:
Kimi Liu
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static class 
    字段数组,表示部分字段的虚拟表
    static class 
    支持直接指定字段名或列名的方法引用
    static class 
    带有指定实体类类型的方法引用
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Map<Fn<?,?>,ClassField>
    缓存方法引用与对应的字段信息
    static final Map<Fn<?,?>,ColumnMeta>
    缓存方法引用与对应的列信息
  • Method Summary

    Modifier and Type
    Method
    Description
    static <T> Fn<T,Object>
    column(Class<T> entityClass, String column)
    通过列名指定实体类中的列
    static <T> Fn<T,Object>
    field(Class<T> entityClass, String field)
    通过字段名指定实体类中的字段
    static <T> Fn<T,Object>
    field(Class<T> entityClass, Fn<T,Object> field)
    指定实体类中的字段
    default Fn<T,R>
    in(Class<?> entityClass)
    指定方法引用所属的实体类,适用于继承场景
    static <E> Fn.FnArray<E>
    of(Class<E> entityClass, String... columnNames)
    创建包含指定列名的虚拟表
    static <E> Fn.FnArray<E>
    of(Class<E> entityClass, Fn<E,Object>... fns)
    创建包含指定字段的虚拟表,适用于基类或泛型基类场景
    static <E> Fn.FnArray<E>
    of(Fn<E,Object>... fns)
    创建包含指定字段的虚拟表
    default ClassField
    获取方法引用对应的字段信息
    default String
    获取方法引用对应的列名
    default ColumnMeta
    获取方法引用对应的列信息
    default String
    获取方法引用对应的字段名

    Methods inherited from interface java.util.function.Function

    andThen, apply, compose
  • Field Details

    • FN_COLUMN_MAP

      static final Map<Fn<?,?>,ColumnMeta> FN_COLUMN_MAP
      缓存方法引用与对应的列信息
    • FN_CLASS_FIELD_MAP

      static final Map<Fn<?,?>,ClassField> FN_CLASS_FIELD_MAP
      缓存方法引用与对应的字段信息
  • Method Details

    • of

      @SafeVarargs static <E> Fn.FnArray<E> of(Class<E> entityClass, Fn<E,Object>... fns)
      创建包含指定字段的虚拟表,适用于基类或泛型基类场景
      Type Parameters:
      E - 实体类型
      Parameters:
      entityClass - 实体类类型
      fns - 方法引用数组
      Returns:
      虚拟表对象
    • of

      @SafeVarargs static <E> Fn.FnArray<E> of(Fn<E,Object>... fns)
      创建包含指定字段的虚拟表
      Type Parameters:
      E - 实体类型
      Parameters:
      fns - 方法引用数组
      Returns:
      虚拟表对象
    • of

      static <E> Fn.FnArray<E> of(Class<E> entityClass, String... columnNames)
      创建包含指定列名的虚拟表
      Type Parameters:
      E - 实体类型
      Parameters:
      entityClass - 实体类类型
      columnNames - 列名数组
      Returns:
      虚拟表对象
    • field

      static <T> Fn<T,Object> field(Class<T> entityClass, Fn<T,Object> field)
      指定实体类中的字段
      Type Parameters:
      T - 实体类型
      Parameters:
      entityClass - 实体类类型
      field - 方法引用
      Returns:
      方法引用对象
    • field

      static <T> Fn<T,Object> field(Class<T> entityClass, String field)
      通过字段名指定实体类中的字段
      Type Parameters:
      T - 实体类型
      Parameters:
      entityClass - 实体类类型
      field - 字段名
      Returns:
      方法引用对象
    • column

      static <T> Fn<T,Object> column(Class<T> entityClass, String column)
      通过列名指定实体类中的列
      Type Parameters:
      T - 实体类型
      Parameters:
      entityClass - 实体类类型
      column - 列名
      Returns:
      方法引用对象
    • in

      default Fn<T,R> in(Class<?> entityClass)
      指定方法引用所属的实体类,适用于继承场景
      Parameters:
      entityClass - 实体类类型
      Returns:
      带有指定实体类的 Fn 对象
    • toField

      default String toField()
      获取方法引用对应的字段名
      Returns:
      字段名
    • toColumn

      default String toColumn()
      获取方法引用对应的列名
      Returns:
      列名
    • toClassField

      default ClassField toClassField()
      获取方法引用对应的字段信息
      Returns:
      字段名及所属类信息
    • toEntityColumn

      default ColumnMeta toEntityColumn()
      获取方法引用对应的列信息
      Returns:
      列信息对象