db.sql.api.cmd.ICmdFactory Maven / Gradle / Ivy
package db.sql.api.cmd;
import db.sql.api.Cmd;
import db.sql.api.Getter;
import db.sql.api.cmd.basic.IDataset;
import db.sql.api.cmd.basic.IDatasetField;
import db.sql.api.cmd.basic.ITable;
import db.sql.api.cmd.basic.ITableField;
import java.util.function.Function;
public interface ICmdFactory
, TABLE_FIELD extends ITableField> {
default TABLE table(Class> entity) {
return this.table(entity, 1);
}
/**
* 根据实体类获取TABLE对象
*
* @param entity 实体类
* @param storey 存储层级
* @return
*/
TABLE table(Class> entity, int storey);
/**
* 根据表名获取TABLE对象
*
* @param tableName
* @return
*/
TABLE table(String tableName);
/**
* 根据Lambda getter 获取列名
*
* @param column
* @param
* @return
*/
String columnName(Getter column);
default TABLE_FIELD field(Getter column) {
return this.field(column, 1);
}
/**
* 根据Lambda getter 获取列对象
*
* @param column
* @param storey 存储层级
* @param
* @return
*/
TABLE_FIELD field(Getter column, int storey);
default TABLE_FIELD[] fields(Getter... columns) {
return this.fields(1, columns);
}
TABLE_FIELD[] fields(int storey, Getter... columns);
TABLE_FIELD[] fields(GetterField... getterFields);
default TABLE_FIELD field(Class> entity, String filedName) {
return this.field(entity, filedName, 1);
}
/**
* 根据字段名获取TABLE_FIELD
*
* @param entity
* @param filedName
* @param storey
* @return
*/
TABLE_FIELD field(Class> entity, String filedName, int storey);
/**
* 根据dataset(可能是子查询 也可能是表),Lambda getter 创建列对象
*
* @param dataset
* @param column
* @param
* @return
*/
, DATASET_FIELD extends IDatasetField> IDatasetField field(IDataset dataset, Getter column);
/**
* 根据dataset(可能是子查询 也可能是表) 列名,创建 列对象
*
* @param dataset
* @param name
* @return
*/
, DATASET_FIELD extends IDatasetField> IDatasetField field(IDataset dataset, String name);
/**
* 所有列
*
* @param dataset
* @return
*/
, DATASET_FIELD extends IDatasetField> IDatasetField allField(IDataset dataset);
/**
* 根据Lambda getter,万能创建SQL命令方法
*
* @param column 列
* @param RF 返回函数
* @param 实体类型
* @param 返回命令
* @return
*/
default R create(Getter column, Function RF) {
return this.create(column, 1, RF);
}
/**
* 根据Lambda getter,万能创建SQL命令方法
*
* @param column 列
* @param storey 缓存区
* @param RF 返回函数
* @param 实体类型
* @param 返回命令
* @return
*/
R create(Getter column, int storey, Function RF);
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy