package jef.database.meta;
import jef.database.dialect.DatabaseDialect;
import jef.database.dialect.type.ColumnMapping;
import jef.database.query.SqlContext;
public interface IReferenceColumn extends ISelectProvider{
// //////////////////////////////单列模式
/**
* 得到选择语句中的列名(表达式甚至case when子句,甚至子查询)(仅单列模式下,全对象模式返回null)
*
* @param profile
* @param tableAlias
* @return
*/
String getSelectItem(DatabaseDialect profile, String tableAlias,SqlContext context);
/**
* 得到该列的转义后的别名(仅单列模式下,全对象模式返回null)
*
* @param tableAlias
* @param profile
* @param isSelecting 当生成SQL时候为true,当拼结果的时候为false
* @return
*/
String getSelectedAlias(String tableAlias,DatabaseDialect profile);//
/**
* 获得列别名,当访问结果集时使用。要求返回大写字符
* @return
*/
String getResultAlias(String tableAlias,DatabaseDialect profile);
/**
* 目标列的meta
* @return
*/
ColumnMapping getTargetColumnType();
}