${package}
import com.fastchar.core.FastChar;
import com.fastchar.extjs.core.FastExtEntity;
import com.fastchar.database.FastPage;
import com.fastchar.database.info.FastSqlInfo;
${imports}

/**
 * ${markName}数据库实体类
 * @author ${author}
 * @date ${datetime}
 */
public class ${entityName} extends FastExtEntity<${entityName}> {
    private static final long serialVersionUID = 1L;

    public static ${entityName} dao() {
        return FastChar.getOverrides().singleInstance(${entityName}.class);
    }
    
    public static ${entityName} newInstance() {
        return FastChar.getOverrides().newInstance(${entityName}.class);
    }

    @Override
    public String getTableName() {
        return "${tableName}";
    }

    @Override
    public String getTableDetails() {
        return "${markName}";
    }

    @Override
    public String getEntityCode() {
        return this.getClass().getSimpleName();
    }

    @Override
    public FastPage<${entityName}> showList(int page, int pageSize) {
        ${target}

        String sqlStr = "${selectSql}";
        
        ShowListSqlAdapter showListSqlAdapter = FastChar.getOverrides().singleInstance(false, ShowListSqlAdapter.class);
        if (showListSqlAdapter != null) {
            sqlStr = showListSqlAdapter.convertSql(this, sqlStr);
        }
        FastSqlInfo sqlInfo = toSelectSql(sqlStr);
        return selectBySql(page, pageSize, sqlInfo.getSql(), sqlInfo.toParams());
    }

    @Override
    public void setDefaultValue() {
        ${defaultValue}
    }

    @Override
    public void convertValue() {
        super.convertValue();
         ${convertValue}
    }

    @Override
    public boolean save() {
        ${saveCode}
        return super.save();
    }

    @Override
    public boolean update() {
        ${updateCode}
        return super.update();
    }

    ${enum}

    ${methods}
}
