EntityAdapter接口说明

最后更新:2023-10-18 19:36:49 | 状态:未完成
EntityAdapter主要用来实现实体类与表,属性与列之间的转换。
系统自带一个默认的EntityAdapter,每个项目也可以提供定制的EntityAdapter,参考【EntityAdapter定制
在执行转换时会按顺序调用,直到成功为止,顺序以EntityAdapter.order()方法返回的int正序(DefaultEntityAdapter默认返回10)

如果需要禁用默认的EntityAdapter可以通过配置项ConfigTable.IS_DISABLED_DEFAULT_ENTITY_ADAPTER=true;//true表示禁用

详细接口说明:
// 多个adatper时的排序依据
int order(){

// 针对哪些类(包含子类 实现类)有效 
Class type()

// 如果针对多个类可以通过这里返回
List<Class> types();
// 获取clazz类关联的表名
Table table(Class clazz)

// 获取clazz类的列名s
LinkedHashMap<String, Column> columns(Class clazz)

// 获取clazz类的列名s
// mode用来区分  insert环境  update环境 ddl环境
LinkedHashMap<String, Column> columns(Class clazz, MODE mode) 

// 获取clazz类field属性关联的列名
// annotations 属性上的注解 ,默认以第一个成功取值的注解为准 column.name,column.value,TableField.name,TableField.value,TableId.name,TableId.value,Id.name,Id.value
Column column(Class clazz, Field field, String ... annotations) 

// 根据类与列名 获取相关的属性
Field field(Class clazz, Column column)

// 列对应的属性
Field field(Class clazz, String column)

// 检测主键(是主键列名不是值)
Column primaryKey(Class clazz)

/**
* 多主键情况下检测主键(是主键列名不是值)<br/>
* 根据注解检测主键名s(注解名不区分大小写,支持模糊匹配如Table*)<br/>
* 先根据配置文件中的ENTITY_PRIMARY_KEY_ANNOTATION,如果出现多种主键标识方式可以逗号分隔以先取到的为准<br/>
* 如果没有检测到再检测注解中带TableId或Id的属性名<br/>
* 如果没有检测到按默认主键DataRow._PRIMARY_KEY<br/>
*/
LinkedHashMap<String, Column> primaryKeys(Class clazz)

// 主键值 
Map<String, Object> primaryValue(Object obj) 

// 生成主键值
boolean createPrimaryValue(Object obj, List<String> inserts) 

// 主键值
Map<String, Object> primaryValues(Object obj) 

 
// DataRow转换成entity时调用  如果有实现则不再执行 DataRow.entity
// 如果不实现当前可以返回null,将继续执行默认处理方式
<T> T entity(Class<T> clazz, Map<String, Object> map, Map columns) 

/**
* DataRow转换成entity时调用  如果有实现则不再执行 DataRow.entity<<br/>
* 如果不实现当前可以返回null,将继续执行默认处理方式<br/>
* @param entity 在此基础上执行,如果不提供则新创建
*/
<T> T entity(T entity, Class<T> clazz, Map<String, Object> map, Map metadatas) 


// entity转换成DataRow时调用 如果有实现则不再执行DataRow.parse
// 如果不实现当前可以返回null,将继续执行默认处理方式 
DataRow row(Object obj, String... keys) 


/**
* entity转换成DataRow时调用 如果有实现则不再执行DataRow.parse
* 如果不实现当前可以返回null,将继续执行默认处理方式
* 注意实现时不要调用 DataRow.public static DataRow parse(DataRow row, Object obj, String... keys) 形成无限递归
* @param row 在此基础上执行,如果不提供则新创建 
* 注意不要调用 DataRow. static DataRow parse(DataRow row, Object obj, String... keys) 形成无限递归
*/
DataRow row(DataRow row, Object obj, String... keys) 


// 列名转换成http参数时调用
// 如果不实现当前可以返回null,将继续执行默认处理方式
List<String> column2param(List<String> metadatas)  
 
 

最近更新 搜索 提交