All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.yulichang.wrapper.interfaces.Func Maven / Gradle / Ivy

package com.github.yulichang.wrapper.interfaces;

import com.baomidou.mybatisplus.core.toolkit.support.SFunction;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
import java.util.Optional;
import java.util.function.Consumer;

import static java.util.stream.Collectors.toList;

/**
 * 将原来的泛型R改成SFunction
 * 

* copy {@link com.baomidou.mybatisplus.core.conditions.interfaces.Func} */ @SuppressWarnings("unchecked") public interface Func extends Serializable { /** * ignore */ default Children isNull(SFunction column) { return isNull(true, column); } /** * 字段 IS NULL *

例: isNull("name")

* * @param condition 执行条件 * @param column 字段 * @return children */ Children isNull(boolean condition, SFunction column); /** * ignore */ default Children isNotNull(SFunction column) { return isNotNull(true, column); } /** * 字段 IS NOT NULL *

例: isNotNull("name")

* * @param condition 执行条件 * @param column 字段 * @return children */ Children isNotNull(boolean condition, SFunction column); /** * ignore */ default Children in(SFunction column, Collection coll) { return in(true, column, coll); } /** * 字段 IN (value.get(0), value.get(1), ...) *

例: in("id", Arrays.asList(1, 2, 3, 4, 5))

* *
  • 如果集合为 empty 则不会进行 sql 拼接
  • * * @param condition 执行条件 * @param column 字段 * @param coll 数据集合 * @return children */ Children in(boolean condition, SFunction column, Collection coll); /** * ignore */ default Children in(SFunction column, Object... values) { return in(true, column, values); } /** * 字段 IN (v0, v1, ...) *

    例: in("id", 1, 2, 3, 4, 5)

    * *
  • 如果动态数组为 empty 则不会进行 sql 拼接
  • * * @param condition 执行条件 * @param column 字段 * @param values 数据数组 * @return children */ default Children in(boolean condition, SFunction column, Object... values) { return in(condition, column, Arrays.stream(Optional.ofNullable(values).orElseGet(() -> new Object[]{})) .collect(toList())); } /** * ignore */ default Children notIn(SFunction column, Collection coll) { return notIn(true, column, coll); } /** * 字段 NOT IN (value.get(0), value.get(1), ...) *

    例: notIn("id", Arrays.asList(1, 2, 3, 4, 5))

    * * @param condition 执行条件 * @param column 字段 * @param coll 数据集合 * @return children */ Children notIn(boolean condition, SFunction column, Collection coll); /** * ignore */ default Children notIn(SFunction column, Object... value) { return notIn(true, column, value); } /** * 字段 NOT IN (v0, v1, ...) *

    例: notIn("id", 1, 2, 3, 4, 5)

    * * @param condition 执行条件 * @param column 字段 * @param values 数据数组 * @return children */ default Children notIn(boolean condition, SFunction column, Object... values) { return notIn(condition, column, Arrays.stream(Optional.ofNullable(values).orElseGet(() -> new Object[]{})) .collect(toList())); } /** * ignore */ default Children inSql(SFunction column, String inValue) { return inSql(true, column, inValue); } /** * 字段 IN ( sql语句 ) *

    !! sql 注入方式的 in 方法 !!

    *

    例1: inSql("id", "1, 2, 3, 4, 5, 6")

    *

    例2: inSql("id", "select id from table where id < 3")

    * * @param condition 执行条件 * @param column 字段 * @param inValue sql语句 * @return children */ Children inSql(boolean condition, SFunction column, String inValue); /** * ignore */ default Children notInSql(SFunction column, String inValue) { return notInSql(true, column, inValue); } /** * 字段 NOT IN ( sql语句 ) *

    !! sql 注入方式的 not in 方法 !!

    *

    例1: notInSql("id", "1, 2, 3, 4, 5, 6")

    *

    例2: notInSql("id", "select id from table where id < 3")

    * * @param condition 执行条件 * @param column 字段 * @param inValue sql语句 ---> 1,2,3,4,5,6 或者 select id from table where id < 3 * @return children */ Children notInSql(boolean condition, SFunction column, String inValue); /** * ignore */ default Children groupBy(SFunction column) { return groupBy(true, column); } /** * ignore */ default Children groupBy(SFunction... columns) { return groupBy(true, columns); } /** * 分组:GROUP BY 字段, ... *

    例: groupBy("id", "name")

    * * @param condition 执行条件 * @param columns 字段数组 * @return children */ Children groupBy(boolean condition, SFunction... columns); /** * ignore */ default Children orderByAsc(SFunction column) { return orderByAsc(true, column); } /** * ignore */ default Children orderByAsc(SFunction... columns) { return orderByAsc(true, columns); } /** * 排序:ORDER BY 字段, ... ASC *

    例: orderByAsc("id", "name")

    * * @param condition 执行条件 * @param columns 字段数组 * @return children */ default Children orderByAsc(boolean condition, SFunction... columns) { return orderBy(condition, true, columns); } /** * ignore */ default Children orderByDesc(SFunction column) { return orderByDesc(true, column); } /** * ignore */ default Children orderByDesc(SFunction... columns) { return orderByDesc(true, columns); } /** * 排序:ORDER BY 字段, ... DESC *

    例: orderByDesc("id", "name")

    * * @param condition 执行条件 * @param columns 字段数组 * @return children */ default Children orderByDesc(boolean condition, SFunction... columns) { return orderBy(condition, false, columns); } /** * 排序:ORDER BY 字段, ... *

    例: orderBy(true, "id", "name")

    * * @param condition 执行条件 * @param isAsc 是否是 ASC 排序 * @param columns 字段数组 * @return children */ Children orderBy(boolean condition, boolean isAsc, SFunction... columns); /** * ignore */ default Children having(String sqlHaving, Object... params) { return having(true, sqlHaving, params); } /** * HAVING ( sql语句 ) *

    例1: having("sum(age) > 10")

    *

    例2: having("sum(age) > {0}", 10)

    * * @param condition 执行条件 * @param sqlHaving sql 语句 * @param params 参数数组 * @return children */ Children having(boolean condition, String sqlHaving, Object... params); /** * ignore */ default Children func(Consumer consumer) { return func(true, consumer); } /** * 消费函数 * * @param consumer 消费函数 * @return children * @since 3.3.1 */ Children func(boolean condition, Consumer consumer); }




    © 2015 - 2025 Weber Informatics LLC | Privacy Policy