All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nutz.dao.entity.Entity Maven / Gradle / Ivy

Go to download

Nutz, which is a collections of lightweight frameworks, each of them can be used independently

There is a newer version: 1.r.72
Show newest version
package org.nutz.dao.entity;

import org.nutz.dao.FieldMatcher;
import org.nutz.dao.interceptor.PojoInterceptor;
import org.nutz.dao.sql.Pojo;
import org.nutz.lang.Mirror;
import org.nutz.lang.util.Context;

import java.sql.ResultSet;
import java.util.List;
import java.util.Map;

/**
 * 描述了一个实体
 * 
 * @author zozoh([email protected])
 */
public interface Entity {

    /**
     * @return 实体的 Java 类型
     */
    Class getType();

    /**
     * @return 实体的 Java 类型
     */
    Mirror getMirror();

    /**
     * @return 实体索引列表
     */
    List getIndexes();

    /**
     * 获取实体的表名
     * 
     * @return 实体表名
     */
    String getTableName();

    /**
     * 获取实体视图名
     * 
     * @return 实体视图名
     */
    String getViewName();

    /**
     * 按名称获取一个实体的索引
     * 
     * @param name
     *            索引名称
     * @return 实体索引
     */
    EntityIndex getIndex(String name);

    /**
     * 从结果集中生成一个实体实例
     * 
     * @param rs
     *            结果集
     * @param matcher
     *            字段匹配器。如果为null,则获取实体的全部字段
     * @return Java 对象
     */
    T getObject(ResultSet rs, FieldMatcher matcher);
    T getObject(ResultSet rs, FieldMatcher matcher, String prefix);

    /**
     * 从一个记录中生成一个实体实例
     * 
     * @param rec
     *            结果集
     * 
     * @return Java 对象
     */
    T getObject(Record rec);
    T getObject(Record rec, String prefix);

    /**
     * 根据实体的 Java 字段名获取一个实体字段对象
     * 
     * @param name
     *            实体字段的 Java 对象名
     * @return 实体字段
     */
    MappingField getField(String name);

    /**
     * 增加一个插入前字段宏
     * 
     * @param pojo
     *            Pojo 语句
     * @return 是否增加成功
     */
    boolean addBeforeInsertMacro(Pojo pojo);

    /**
     * 增加一个插入后字段宏
     * 
     * @param pojo
     *            Pojo 语句
     * @return 是否增加成功
     */
    boolean addAfterInsertMacro(Pojo pojo);

    /**
     * 获取实体所有自动执行的字段宏列表
     * 

* 这些自动执行宏,在实体被插入到数据库前调用 *

* 比如程序员可以为某个字段定义值的自动生成规则 * * @return 预执行宏列表 */ List cloneBeforeInsertMacroes(); /** * 获取实体所有自动执行的字段宏列表 *

* 这些自动执行宏,在实体被插入到数据库后调用 *

* 比如程序员可以为数据库自动生成的字段获取生成后的值 * * @return 后执行字段宏列表 */ List cloneAfterInsertMacroes(); /** * 根据实体的数据库字段名获取一个实体字段对象 * * @param name * 实体字段数据库字段名 * @return 实体字段 */ MappingField getColumn(String name); /** * @return 实体所有的映射字段 */ List getMappingFields(); /** * 获取实体所有匹配上正则表达是的关联字段,如果正则表达是为 null,则表示获取全部关联字段 * * @param regex * 正则表达式 * * @return 实体所有匹配上正则表达是的关联字段 */ List getLinkFields(String regex); /** * 访问所有一对一映射。即 '@One' 声明的字段 * * @param obj * 映射的宿主对象 * @param visitor * 处理器 * @param regex * 正则表达式匹配 Java 字段名。null 表示匹配所有一对一映射字段 * @return 匹配上的映射字段 */ List visitOne(Object obj, String regex, LinkVisitor visitor); /** * 访问所有一对多映射。即 '@Many' 声明的字段 * * @param obj * 映射的宿主对象 * @param visitor * 处理器 * @param regex * 正则表达式匹配 Java 字段名。null 表示匹配所有一对多映射字段 * @return 匹配上的映射字段 */ List visitMany(Object obj, String regex, LinkVisitor visitor); /** * 访问所有多对多映射。即 '@ManyMany' 声明的字段 * * @param obj * 映射的宿主对象 * @param visitor * 处理器 * @param regex * 正则表达式匹配 Java 字段名。null 表示匹配所有多对多映射字段 * @return 匹配上的映射字段 */ List visitManyMany(Object obj, String regex, LinkVisitor visitor); /** * 如果实体采用了复合主键,调用这个函数能返回所有的复合主键,顺序就是复合主键的顺序 *

* 如果没有复合主键,那么将返回 null * * @return 实体所复合主键字段 */ List getCompositePKFields(); /** * @return 实体唯一字符类型主键 */ MappingField getNameField(); /** * @return 实体唯一数字类型主键 */ MappingField getIdField(); /** * 根据,"数字主键 > 字符主键 > 复合主键" 的优先顺序,返回主键列表 * * @return 实体的主键列表 */ List getPks(); /** * @return 当前实体首选主键类型 */ PkType getPkType(); /** * 将一个实体对象的实例包裹成 Context 接口 * * @param obj * 实体对象的实例 * @return Context */ Context wrapAsContext(Object obj); /** * 获取一个实体补充描述 * * @param key * 实体补充描述的键值 * @return 实体补充描述的内容 */ Object getMeta(String key); /** * 实体是否包含某一种 meta * * @param key * meta 的键值 * @return 是否包含 */ boolean hasMeta(String key); /** * @return 实体补充描述的集合 */ Map getMetas(); /** * @return 表是否有注释 */ boolean hasTableComment(); /** * @return 字段是否注释 */ boolean hasColumnComment(); /** * @return 表注释 */ String getTableComment(); /** * 根据字段名获得注释 * * @param columnName * 字段名称 * @return 注释 */ String getColumnComent(String columnName); boolean isComplete(); T born(ResultSet rs); /** * @return 实体version字段映射 */ MappingField getVersionField(); PojoInterceptor getInterceptor(); void setInterceptor(PojoInterceptor interceptor); boolean hasInsertMacroes(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy