com.easy.query.api4j.func.LambdaSQLFunc Maven / Gradle / Ivy
package com.easy.query.api4j.func;
import com.easy.query.api4j.func.column.SQLColumnFuncSelector;
import com.easy.query.api4j.func.column.SQLColumnFuncSelectorImpl;
import com.easy.query.api4j.util.EasyLambdaUtil;
import com.easy.query.core.expression.lambda.Property;
import com.easy.query.core.expression.lambda.SQLExpression1;
import com.easy.query.core.expression.parser.core.EntitySQLTableOwner;
import com.easy.query.core.func.SQLFunction;
/**
* create time 2023/10/12 16:41
* 文件说明
*
* @author xuejiaming
*/
public interface LambdaSQLFunc extends LambdaAggregateSQLFunc,LambdaSQLStringFunc,LambdaSQLDateTimeFunc,LambdaSQLNumberFunc,LambdaSQLMathFunc {
/**
* 如果property对应的值为null则返回def值
*
* @param property 属性列
* @param def 默认值
* @return ifNull函数
*/
default SQLFunction nullOrDefault(Property property, Object def) {
return nullOrDefault(s -> {
s.column(property)
.value(def);
});
}
/**
* 请使用 nullOrDefault
* @param property
* @param def
* @return
*/
@Deprecated
default SQLFunction valueOrDefault(Property property, Object def) {
return nullOrDefault(s -> {
s.column(property)
.value(def);
});
}
/**
* 如果选择的对应的值为null则返回默认值
*
* @param sqlExpression 属性选择函数
* @return ifNull函数
*/
default SQLFunction nullOrDefault(SQLExpression1> sqlExpression) {
return getSQLFunc().nullOrDefault(o->{
SQLColumnFuncSelectorImpl sqlColumnConcatSelector = new SQLColumnFuncSelectorImpl<>(o);
sqlExpression.apply(sqlColumnConcatSelector);
});
}
/**
* 请使用 nullOrDefault
* @param sqlExpression
* @return
*/
@Deprecated
default SQLFunction valueOrDefault(SQLExpression1> sqlExpression) {
return nullOrDefault(sqlExpression);
}
/**
* 请使用 math
* 获取绝对值
*
* @param property 属性列
* @return 绝对值函数
*/
@Deprecated
default SQLFunction abs(Property property) {
return abs(null, property);
}
/**
* 请使用 math
* 获取绝对值
*
* @param tableOwner 属性所属表
* @param property 属性列
* @return 绝对值函数
*/
@Deprecated
default SQLFunction abs(EntitySQLTableOwner tableOwner, Property property) {
return getSQLFunc().abs(tableOwner, EasyLambdaUtil.getPropertyName(property));
}
/**
* 请使用 math
* 按照指定的小数位数进行四舍五入运算
*
* @param property 属性列
* @param scale 保留小数位数
* @return 四舍五入函数
*/
@Deprecated
default SQLFunction round(Property property, int scale) {
return round(null, property, scale);
}
/**
* 请使用 math
* 按照指定的小数位数进行四舍五入运算
*
* @param tableOwner 列所属表
* @param property 属性列
* @param scale 保留小数位数
* @return round函数
*/
@Deprecated
default SQLFunction round(EntitySQLTableOwner tableOwner, Property property, int scale) {
return getSQLFunc().round(tableOwner, EasyLambdaUtil.getPropertyName(property), scale);
}
/**
* 对时间格式的列进行格式化 默认 yyyy-MM-dd HH:mm:ss.fff
*
* @param property 时间格式列
* @return 时间格式函数
*/
default SQLFunction dateTimeFormat(Property property) {
return dateTimeFormat(property, null);
}
/**
* 对时间格式的列进行格式化 默认 yyyy-MM-dd HH:mm:ss.fff
* {@code javaFormat} yyyy-MM-dd HH:mm:ss | yyyy/MM/dd HH:mm:ss | yyyy-MM-dd ...
*
* @param property 时间格式列
* @param javaFormat java格式化
* @return 时间格式函数
*/
default SQLFunction dateTimeFormat(Property property, String javaFormat) {
return dateTimeFormat(null, property, javaFormat);
}
/**
* 对时间格式的列进行格式化 默认 yyyy-MM-dd HH:mm:ss.fff
* {@code javaFormat} yyyy-MM-dd HH:mm:ss | yyyy/MM/dd HH:mm:ss | yyyy-MM-dd ...
*
* @param tableOwner 属性对应的表
* @param property 时间格式列
* @param javaFormat java格式化
* @return 时间格式函数
*/
default SQLFunction dateTimeFormat(EntitySQLTableOwner tableOwner, Property property, String javaFormat) {
return getSQLFunc().dateTimeFormat(tableOwner, EasyLambdaUtil.getPropertyName(property), javaFormat);
}
/**
* 对时间格式的列进行格式化
*
* @param property 时间格式列
* @param format 数据库格式化
* @return 时间格式函数
*/
default SQLFunction dateTimeSQLFormat(Property property, String format) {
return dateTimeSQLFormat(null, property, format);
}
/**
* 对时间格式的列进行格式化
*
* @param tableOwner 属性对应的表
* @param property 时间格式列
* @param format 数据库格式化
* @return 时间格式函数
*/
default SQLFunction dateTimeSQLFormat(EntitySQLTableOwner tableOwner, Property property, String format) {
return getSQLFunc().dateTimeSQLFormat(tableOwner, EasyLambdaUtil.getPropertyName(property), format);
}
//
// default SQLFunction join(String separator, Property property1, Property property2) {
// return this.join(separator, s -> {
// s.column(property1)
// .column(property2);
// });
// }
//
// default SQLFunction join(String separator, Property property1, Property property2, Property property3) {
// return this.join(separator, s -> {
// s.column(property1)
// .column(property2)
// .column(property3);
// });
// }
//
// default SQLFunction join(String separator, SQLExpression1> sqlExpression) {
// List columnExpressions = new ArrayList<>();
// sqlExpression.apply(new SQLColumnConcatSelectorImpl<>(new ColumnFuncSelectorImpl(columnExpressions)));
// return join(separator, columnExpressions);
// }
//
// default SQLFunction join(String separator, List concatExpressions) {
// return getSQLFunc().join(separator, concatExpressions);
// }
/**
* 当前时间函数
*
* @return 时间函数
*/
default SQLFunction now() {
return getSQLFunc().now();
}
/**
* 当前UTC时间函数
*
* @return UTC时间函数
*/
default SQLFunction utcNow() {
return getSQLFunc().utcNow();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy