Module bus.mapper

Class TableMeta

Direct Known Subclasses:
Fn.FnArray

public class TableMeta extends PropertyMeta<TableMeta>
实体表接口,记录实体和表的关系
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • table

      protected String table
      原始表名,在拼 SQL 中,使用 tableName() 方法,可能返回代理方法加工后的值
    • catalog

      protected String catalog
      catalog 名称,配置后会在表名前面加上 catalog
    • schema

      protected String schema
      schema 名称,配置后会在表名前面加上 schema
    • style

      protected String style
      实体类和字段转表名和字段名方式
    • entityClass

      protected Class<?> entityClass
      实体类
    • columns

      protected List<ColumnMeta> columns
      字段信息
    • ready

      protected boolean ready
      初始化完成,可以使用
    • resultMap

      protected String resultMap
      使用指定的 resultMap
    • autoResultMap

      protected boolean autoResultMap
      自动根据字段生成 resultMap
    • resultMaps

      protected List<org.apache.ibatis.mapping.ResultMap> resultMaps
      已初始化自动 ResultMap
    • excludeSuperClasses

      protected Class<?>[] excludeSuperClasses
      排除指定父类的所有字段
    • excludeFieldTypes

      protected Class<?>[] excludeFieldTypes
      排除指定类型的字段
    • excludeFields

      protected String[] excludeFields
      排除指定字段名的字段
    • initConfiguration

      protected Set<org.apache.ibatis.session.Configuration> initConfiguration
      已经初始化的配置
  • Constructor Details

    • TableMeta

      protected TableMeta(Class<?> entityClass)
      构造函数,初始化实体表
      Parameters:
      entityClass - 实体类
  • Method Details

    • of

      public static TableMeta of(Class<?> entityClass)
      创建 MapperTable 实例
      Parameters:
      entityClass - 实体类
      Returns:
      MapperTable 实例
    • tableName

      public String tableName()
      获取 SQL 语句中使用的表名
      Returns:
      表名,格式为 catalog.schema.tableName
    • columns

      public List<ColumnMeta> columns()
      获取所有列
      Returns:
      所有列信息
    • fieldMetas

      public List<FieldMeta> fieldMetas()
      获取所有字段
      Returns:
      所有字段
    • columnNames

      public List<String> columnNames()
      获取所有列名
      Returns:
      所有列名
    • fieldNames

      public List<String> fieldNames()
      获取所有属性名
      Returns:
      所有属性名
    • addColumn

      public void addColumn(ColumnMeta column)
      添加列
      Parameters:
      column - 列信息
    • canUseResultMaps

      protected boolean canUseResultMaps(org.apache.ibatis.builder.annotation.ProviderContext providerContext, String cacheKey)
      判断是否可以使用 resultMaps
      Parameters:
      providerContext - 当前方法信息
      cacheKey - 缓存 key,每个方法唯一,默认与 msId 相同
      Returns:
      true 表示可以使用,false 表示不可用
    • useResultMaps

      public boolean useResultMaps()
      判断当前实体类是否使用 resultMap
      Returns:
      true 表示使用,false 表示不使用
    • hasBeenReplaced

      protected boolean hasBeenReplaced(org.apache.ibatis.session.Configuration configuration, String cacheKey)
      判断是否已替换 resultMap
      Parameters:
      configuration - MyBatis 配置类
      cacheKey - 缓存 key,每个方法唯一
      Returns:
      true 表示已替换,false 表示未替换
    • initRuntimeContext

      public void initRuntimeContext(org.apache.ibatis.session.Configuration configuration, org.apache.ibatis.builder.annotation.ProviderContext providerContext, String cacheKey)
      设置运行时信息,不同方法分别执行一次,需保证幂等
      Parameters:
      configuration - MyBatis 配置类
      providerContext - 当前方法信息
      cacheKey - 缓存 key,每个方法唯一
    • initResultMap

      protected void initResultMap(org.apache.ibatis.session.Configuration configuration, org.apache.ibatis.builder.annotation.ProviderContext providerContext, String cacheKey)
      初始化 ResultMap
      Parameters:
      configuration - MyBatis 配置类
      providerContext - 当前方法信息
      cacheKey - 缓存 key
    • generateResultMapId

      protected String generateResultMapId(org.apache.ibatis.builder.annotation.ProviderContext providerContext, String resultMapId)
      生成 ResultMap ID
      Parameters:
      providerContext - 提供者上下文
      resultMapId - ResultMap ID
      Returns:
      完整的 ResultMap ID
    • genResultMap

      protected org.apache.ibatis.mapping.ResultMap genResultMap(org.apache.ibatis.session.Configuration configuration, org.apache.ibatis.builder.annotation.ProviderContext providerContext, String cacheKey)
      生成 ResultMap
      Parameters:
      configuration - MyBatis 配置类
      providerContext - 提供者上下文
      cacheKey - 缓存 key
      Returns:
      ResultMap 实例
    • getTypeHandlerInstance

      public org.apache.ibatis.type.TypeHandler getTypeHandlerInstance(Class<?> javaTypeClass, Class<?> typeHandlerClass)
      实例化 TypeHandler
      Parameters:
      javaTypeClass - Java 类型
      typeHandlerClass - TypeHandler 类型
      Returns:
      TypeHandler 实例
    • idColumns

      public List<ColumnMeta> idColumns()
      获取主键列,若无主键则返回所有列
      Returns:
      主键列列表
    • normalColumns

      public List<ColumnMeta> normalColumns()
      获取普通列,排除主键字段
      Returns:
      普通列列表
    • selectColumns

      public List<ColumnMeta> selectColumns()
      获取查询列
      Returns:
      可查询列列表
    • whereColumns

      public List<ColumnMeta> whereColumns()
      获取查询条件列,默认所有列
      Returns:
      查询条件列列表
    • insertColumns

      public List<ColumnMeta> insertColumns()
      获取插入列
      Returns:
      可插入列列表
    • updateColumns

      public List<ColumnMeta> updateColumns()
      获取更新列
      Returns:
      可更新列列表
    • groupByColumns

      public Optional<List<ColumnMeta>> groupByColumns()
      获取 GROUP BY 列,默认空
      Returns:
      GROUP BY 列的 Optional 包装对象
    • havingColumns

      public Optional<List<ColumnMeta>> havingColumns()
      获取 HAVING 列,默认空
      Returns:
      HAVING 列的 Optional 包装对象
    • orderByColumns

      public Optional<List<ColumnMeta>> orderByColumns()
      获取排序列
      Returns:
      排序列的 Optional 包装对象
    • baseColumnList

      public String baseColumnList()
      获取所有查询列,格式为 column1, column2, ...
      Returns:
      查询列字符串
    • baseColumnAsPropertyList

      public String baseColumnAsPropertyList()
      获取所有查询列,格式为 column1 AS property1, column2 AS property2, ...
      Returns:
      查询列带别名字符串
    • insertColumnList

      public String insertColumnList()
      获取所有插入列,格式为 column1, column2, ...
      Returns:
      插入列字符串
    • groupByColumnList

      public Optional<String> groupByColumnList()
      获取 GROUP BY 列列表,格式为 column1, column2, ...
      Returns:
      GROUP BY 列的 Optional 包装对象
    • groupByColumn

      public Optional<String> groupByColumn()
      获取带 GROUP BY 前缀的列字符串
      Returns:
      带 GROUP BY 前缀的列字符串的 Optional 包装对象
    • havingColumnList

      public Optional<String> havingColumnList()
      获取 HAVING 列列表,格式为 column1, column2, ...
      Returns:
      HAVING 列的 Optional 包装对象
    • havingColumn

      public Optional<String> havingColumn()
      获取带 HAVING 前缀的列字符串
      Returns:
      带 HAVING 前缀的列字符串的 Optional 包装对象
    • orderByColumnList

      public Optional<String> orderByColumnList()
      获取 ORDER BY 列列表,格式为 column1 ASC, column2 DESC, ...
      Returns:
      ORDER BY 列的 Optional 包装对象
    • orderByColumn

      public Optional<String> orderByColumn()
      获取带 ORDER BY 前缀的列字符串
      Returns:
      带 ORDER BY 前缀的列字符串的 Optional 包装对象
    • isExcludeSuperClass

      public boolean isExcludeSuperClass(Class<?> superClass)
      判断是否需要排除父类
      Parameters:
      superClass - 父类
      Returns:
      true 表示需要排除,false 表示不需要
    • isExcludeField

      public boolean isExcludeField(FieldMeta field)
      判断是否需要排除指定字段
      Parameters:
      field - 字段
      Returns:
      true 表示需要排除,false 表示不需要
    • equals

      public boolean equals(Object o)
      判断两个 MapperTable 对象是否相等
      Overrides:
      equals in class Object
      Parameters:
      o - 比较对象
      Returns:
      true 表示相等,false 表示不相等
    • hashCode

      public int hashCode()
      计算对象的哈希值
      Overrides:
      hashCode in class Object
      Returns:
      哈希值
    • toString

      public String toString()
      返回字符串表示形式
      Overrides:
      toString in class Object
      Returns:
      表名