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表示禁用
详细接口说明:
系统自带一个默认的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)