package org.nutz.dao.entity; import java.sql.ResultSet; import org.nutz.dao.entity.annotation.ColType; import org.nutz.dao.jdbc.ValueAdaptor; /** * 这个接口描述了一个数据库字段与Java字段的映射关系 * * @author zozoh(zozohtnt@gmail.com) */ public interface MappingField extends EntityField { /** * 通过 Record 为映射字段注入值 * * @param obj * 被注入对象 * @param rec * 结果集 */ void injectValue(Object obj, Record rec); /** * 通过 resultSet 为映射字段注入值 * * @param obj * 被注入对象 * @param rs * 结果集 */ void injectValue(Object obj, ResultSet rs); /** * @return 字段值适配器 */ ValueAdaptor getAdaptor(); /** * 设置字段值适配器 * * @param adaptor * 字段值适配器 */ void setAdaptor(ValueAdaptor adaptor); /** * @return 数据库中的字段名 */ String getColumnName(); /** * @return 数据库中字段的注释 */ String getColumnComment(); /** * @return 数据库中的字段类型 */ ColType getColumnType(); /** * 设置字段在数据库中的类型 * * @param colType * 数据库字段的类型 */ void setColumnType(ColType colType); /** * 根据实体的实例对象,获取默认值 * * @param obj * 当前实体的实例对象 * * @return 数据库字段的默认值 * * @see org.nutz.dao.entity.annotation.Default */ String getDefaultValue(Object obj); /** * @return 字段宽度。默认 0 表示自动决定 */ int getWidth(); /** * @return 字段的精度,仅浮点有效。默认 2 */ int getPrecision(); /** * @return 当前字段是否是主键(包括复合主键) */ boolean isPk(); /** * @return 当前字段是否是复合主键 */ boolean isCompositePk(); /** * @return 当前字段是否是数字型主键 */ boolean isId(); /** * @return 当前字段是否是字符型主键 */ boolean isName(); /** * @return 当前字段是否是只读 */ boolean isReadonly(); /** * 将字段设置成只读 */ void setAsReadonly(); /** * @return 字段是否设置了默认值 */ boolean hasDefaultValue(); /** * @return 当前字段有非空约束 */ boolean isNotNull(); /** * @return 是否为无符号 */ boolean isUnsigned(); /** * @return 当前字段是否大小写敏感 */ boolean isCasesensitive(); /** * 将字段设置成非空约束 */ void setAsNotNull(); /** * 这个判断仅仅对于创建语句有作用。 * * @return 当前字段是否是自增的 */ boolean isAutoIncreasement(); /** * @return 当前字段是否有注释。 */ boolean hasColumnComment(); void setCustomDbType(String customDbType); String getCustomDbType(); /** * @return 当前字段是否参与保存操作 */ boolean isInsert(); /** * @return 当前字段是否参与更新操作 */ boolean isUpdate(); }