ge(String column, Object params) {
sql.WHERE(formatSql(String.format("%s >= {0}", column), params));
return this;
}
/**
*
* 等同于SQL的"field
*
* @param column
* @param params
* @return
*/
public Wrapper lt(String column, Object params) {
sql.WHERE(formatSql(String.format("%s < {0}", column), params));
return this;
}
/**
*
* 等同于SQL的"field<=value"表达式
*
*
* @param column
* @param params
* @return
*/
public Wrapper le(String column, Object params) {
sql.WHERE(formatSql(String.format("%s <= {0}", column), params));
return this;
}
/**
*
* AND 连接后续条件
*
*
* @param sqlAnd
* and条件语句
* @param params
* 参数集
* @return this
*/
public Wrapper and(String sqlAnd, Object... params) {
sql.AND().WHERE(formatSql(sqlAnd, params));
return this;
}
/**
*
* 使用AND连接并换行
*
*
* eg: ew.where("name='zhangsan'").and("id=11").andNew("statu=1"); 输出: WHERE
* (name='zhangsan' AND id=11) AND (statu=1)
*
*
* @param sqlAnd
* AND 条件语句
* @param params
* 参数值
* @return this
*/
public Wrapper andNew(String sqlAnd, Object... params) {
sql.AND_NEW().WHERE(formatSql(sqlAnd, params));
return this;
}
/**
*
* 添加OR条件
*
*
* @param sqlOr
* or 条件语句
* @param params
* 参数集
* @return this
*/
public Wrapper or(String sqlOr, Object... params) {
sql.OR().WHERE(formatSql(sqlOr, params));
return this;
}
/**
*
* 使用OR换行,并添加一个带()的新的条件
*
*
* eg: ew.where("name='zhangsan'").and("id=11").orNew("statu=1"); 输出: WHERE
* (name='zhangsan' AND id=11) OR (statu=1)
*
*
* @param sqlOr
* AND 条件语句
* @param params
* 参数值
* @return this
*/
public Wrapper orNew(String sqlOr, Object... params) {
sql.OR_NEW().WHERE(formatSql(sqlOr, params));
return this;
}
/**
*
* SQL中groupBy关键字跟的条件语句
*
*
* eg: ew.where("name='zhangsan'").groupBy("id,name")
*
*
* @param columns
* SQL 中的 Group by 语句,无需输入 Group By 关键字
* @return this
*/
public Wrapper groupBy(String columns) {
sql.GROUP_BY(columns);
return this;
}
/**
*
* SQL中having关键字跟的条件语句
*
*
* eg: ew.groupBy("id,name").having("id={0}",22).and("password is not null")
*
*
* @param sqlHaving
* having关键字后面跟随的语句
* @param params
* 参数集
* @return EntityWrapper
*/
public Wrapper having(String sqlHaving, Object... params) {
sql.HAVING(formatSql(sqlHaving, params));
return this;
}
/**
*
* SQL中orderby关键字跟的条件语句
*
*
* eg: ew.groupBy("id,name").having("id={0}",22).and("password is not null"
* ).orderBy("id,name")
*
*
* @param columns
* SQL 中的 order by 语句,无需输入 Order By 关键字
* @return this
*/
public Wrapper orderBy(String columns) {
sql.ORDER_BY(columns);
return this;
}
/**
*
* SQL中orderby关键字跟的条件语句,可根据变更动态排序
*
*
* @param columns
* SQL 中的 order by 语句,无需输入 Order By 关键字
* @param isAsc
* 是否为升序
* @return this
*/
public Wrapper orderBy(String columns, boolean isAsc) {
if (StringUtils.isNotEmpty(columns)) {
sql.ORDER_BY(columns + (isAsc ? " ASC" : " DESC"));
}
return this;
}
/**
* LIKE条件语句,value中无需前后%
*
* @param column
* 字段名称
* @param value
* 匹配值
* @return this
*/
public Wrapper like(String column, String value) {
sql.LIKE(column, value,SQLlikeType.DEFAULT);
return this;
}
/**
* NOT LIKE条件语句,value中无需前后%
*
* @param column
* 字段名称
* @param value
* 匹配值
* @return this
*/
public Wrapper notLike(String column, String value) {
sql.NOT_LIKE(column, value,SQLlikeType.DEFAULT);
return this;
}
/**
* LIKE条件语句,value中无需前后%
*
* @param column
* 字段名称
* @param value
* 匹配值
* @param type
* @return this
*/
public Wrapper like(String column, String value, SQLlikeType type) {
sql.LIKE(column, value,type);
return this;
}
/**
* NOT LIKE条件语句,value中无需前后%
*
* @param column
* 字段名称
* @param value
* 匹配值
* @param type
* @return this
*/
public Wrapper notLike(String column, String value, SQLlikeType type) {
sql.NOT_LIKE(column, value,type);
return this;
}
/**
* is not null 条件
*
* @param columns
* 字段名称。多个字段以逗号分隔。
* @return this
*/
public Wrapper isNotNull(String columns) {
sql.IS_NOT_NULL(columns);
return this;
}
/**
* is not null 条件
*
* @param columns
* 字段名称。多个字段以逗号分隔。
* @return this
*/
public Wrapper isNull(String columns) {
sql.IS_NULL(columns);
return this;
}
/**
* EXISTS 条件语句,目前适配mysql及oracle
*
* @param value
* 匹配值
* @return this
*/
public Wrapper exists(String value) {
sql.EXISTS(value);
return this;
}
/**
* NOT EXISTS条件语句
*
* @param value
* 匹配值
* @return this
*/
public Wrapper notExists(String value) {
sql.NOT_EXISTS(value);
return this;
}
/**
* IN 条件语句,目前适配mysql及oracle
*
* @param column
* 字段名称
* @param value
* 逗号拼接的字符串
* @return this
*/
public Wrapper in(String column, String value) {
sql.IN(column, value);
return this;
}
/**
* NOT IN条件语句
*
* @param column
* 字段名称
* @param value
* 逗号拼接的字符串
* @return this
*/
public Wrapper notIn(String column, String value) {
sql.NOT_IN(column, value);
return this;
}
/**
* IN 条件语句,目前适配mysql及oracle
*
* @param column
* 字段名称
* @param value
* 匹配值 List集合
* @return this
*/
public Wrapper in(String column, Collection> value) {
sql.IN(column, value);
return this;
}
/**
* NOT IN 条件语句,目前适配mysql及oracle
*
* @param column
* 字段名称
* @param value
* 匹配值 List集合
* @return this
*/
public Wrapper notIn(String column, Collection> value) {
sql.NOT_IN(column, value);
return this;
}
/**
* IN 条件语句,目前适配mysql及oracle
*
* @param column
* 字段名称
* @param value
* 匹配值 object数组
* @return this
*/
public Wrapper in(String column, Object[] value) {
sql.IN(column, Arrays.asList(value));
return this;
}
/**
* NOT IN 条件语句,目前适配mysql及oracle
*
* @param column
* 字段名称
* @param value
* 匹配值 object数组
* @return this
*/
public Wrapper notIn(String column, Object... value) {
sql.NOT_IN(column, Arrays.asList(value));
return this;
}
/**
* betwwee 条件语句
*
* @param column
* 字段名称
* @param val1
* @param val2
* @return this
*/
public Wrapper between(String column, String val1, String val2) {
sql.BETWEEN_AND(column, val1, val2);
return this;
}
/**
* 为了兼容之前的版本,可使用where()或and()替代
*
* @param sqlWhere
* where sql部分
* @param params
* 参数集
* @return this
*/
public Wrapper addFilter(String sqlWhere, Object... params) {
return and(sqlWhere, params);
}
/**
*
* 根据判断条件来添加条件语句部分 使用 andIf() 替代
*
*
* eg: ew.filterIfNeed(false,"name='zhangsan'").where("name='zhangsan'")
* .filterIfNeed(true,"id={0}",22)
*
* 输出: WHERE (name='zhangsan' AND id=22)
*
*
* @param need
* 是否需要添加该条件
* @param sqlWhere
* 条件语句
* @param params
* 参数集
* @return this
*/
public Wrapper addFilterIfNeed(boolean need, String sqlWhere, Object... params) {
return need ? where(sqlWhere, params) : this;
}
/**
*
* SQL注入内容剥离
*
*
* @param value
* 待处理内容
* @return this
*/
protected String stripSqlInjection(String value) {
return value.replaceAll("('.+--)|(--)|(\\|)|(%7C)", "");
}
/**
*
* 格式化SQL
*
*
* @param sqlStr
* SQL语句部分
* @param params
* 参数集
* @return this
*/
protected String formatSql(String sqlStr, Object... params) {
return formatSqlIfNeed(true, sqlStr, params);
}
/**
*
* 根据需要格式化SQL
*
*
* @param need
* 是否需要格式化
* @param sqlStr
* SQL语句部分
* @param params
* 参数集
* @return this
*/
protected String formatSqlIfNeed(boolean need, String sqlStr, Object... params) {
if (!need || StringUtils.isEmpty(sqlStr)) {
return null;
}
return StringUtils.sqlArgsFill(sqlStr, params);
}
}