123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717 |
- package com.fjhx.utils.wrapperUtil;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.convert.Convert;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.ObjectUtil;
- import cn.hutool.core.util.StrUtil;
- import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
- import com.baomidou.mybatisplus.core.conditions.SharedString;
- import com.baomidou.mybatisplus.core.conditions.query.Query;
- import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
- import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
- import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
- import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
- import com.baomidou.mybatisplus.core.toolkit.StringPool;
- import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
- import lombok.SneakyThrows;
- import org.apache.ibatis.reflection.property.PropertyNamer;
- import org.springblade.core.log.exception.ServiceException;
- import java.lang.invoke.SerializedLambda;
- import java.lang.reflect.Method;
- import java.util.Collection;
- import java.util.Date;
- import java.util.Map;
- import java.util.concurrent.atomic.AtomicInteger;
- import java.util.function.Predicate;
- @SuppressWarnings({"unused"})
- public class IWrapper<T> extends AbstractWrapper<T, String, IWrapper<T>> implements Query<IWrapper<T>, T, String> {
- // =====================================================================
- // QueryWrapper原生方法
- // =====================================================================
- private final SharedString sqlSelect = new SharedString();
- private IWrapper(T entityMap, Class<T> entityClass, AtomicInteger paramNameSeq,
- Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
- SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
- super.setEntity(entityMap);
- super.setEntityClass(entityClass);
- this.paramNameSeq = paramNameSeq;
- this.paramNameValuePairs = paramNameValuePairs;
- this.expression = mergeSegments;
- this.lastSql = lastSql;
- this.sqlComment = sqlComment;
- this.sqlFirst = sqlFirst;
- }
- @Override
- public IWrapper<T> select(String... columns) {
- if (ArrayUtils.isNotEmpty(columns)) {
- this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns));
- }
- return this;
- }
- @Override
- public IWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
- super.setEntityClass(entityClass);
- this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getEntityClass()).chooseSelect(predicate));
- return this;
- }
- @Override
- public String getSqlSelect() {
- return sqlSelect.getStringValue();
- }
- @Override
- protected IWrapper<T> instance() {
- return new IWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(),
- SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString());
- }
- @Override
- public void clear() {
- super.clear();
- sqlSelect.toNull();
- }
- // =====================================================================
- // 初始化
- // =====================================================================
- private Map<String, ?> entityMap;
- private IWrapper() {
- super.initNeed();
- }
- private IWrapper(Object obj) {
- super.initNeed();
- entityMap = BeanUtil.beanToMap(obj);
- }
- private IWrapper(Map<String, ?> map) {
- super.initNeed();
- entityMap = map;
- }
- public static <T> IWrapper<T> getWrapper() {
- return new IWrapper<>();
- }
- public static <T> IWrapper<T> getWrapper(Object obj) {
- return new IWrapper<>(obj);
- }
- public static <T> IWrapper<T> getWrapper(Map<String, ?> map) {
- return new IWrapper<>(map);
- }
- // =====================================================================
- // 拓展方法
- // =====================================================================
- /**
- * 时间段查询
- */
- public <K, V> IWrapper<T> periodTime(SFunction<K, V> function) {
- return periodTime(getSqlFieldName(function));
- }
- public <K, V> IWrapper<T> periodTime(String alias, SFunction<K, V> function) {
- return periodTime(getSqlFieldName(alias, function));
- }
- public IWrapper<T> periodTime(String field) {
- Object beginTime = getValue("beginTime");
- if (ObjectUtil.isNull(beginTime)) {
- return this;
- }
- Object endTime = getValue("endTime");
- if (ObjectUtil.isNull(endTime)) {
- return this;
- }
- Date beginOfDay;
- Date endOfDay;
- try {
- beginOfDay = DateUtil.beginOfDay(DateUtil.parse(beginTime.toString()));
- endOfDay = DateUtil.endOfDay(DateUtil.parse(endTime.toString()));
- } catch (Exception e) {
- throw new ServiceException("时间类型转换错误");
- }
- return between(true, field, beginOfDay, endOfDay);
- }
- /**
- * 关键字查询
- */
- public IWrapper<T> keyword(KeywordData... keywordData) {
- Object value = getValue("keyword");
- return keyword(value, keywordData);
- }
- public IWrapper<T> keyword(Object value, KeywordData... keywordData) {
- this.and(ObjectUtil.isNotEmpty(value), q -> {
- for (KeywordData keywordDatum : keywordData) {
- q.or().like(keywordDatum.getSqlFieldName(), value);
- }
- });
- return this;
- }
- /**
- * 查询字段
- */
- @SafeVarargs
- public final <K, V> IWrapper<T> select(SFunction<K, V>... functions) {
- return select(getColumns(functions));
- }
- /**
- * 排序
- */
- public <K, V> IWrapper<T> orderByAsc(SFunction<K, V> function) {
- return orderByAsc(getSqlFieldName(function));
- }
- public <K, V> IWrapper<T> orderByAsc(String alias, SFunction<K, V> function) {
- return orderByAsc(getSqlFieldName(alias, function));
- }
- public <K, V> IWrapper<T> orderByDesc(SFunction<K, V> function) {
- return orderByDesc(getSqlFieldName(function));
- }
- public <K, V> IWrapper<T> orderByDesc(String alias, SFunction<K, V> function) {
- return orderByDesc(getSqlFieldName(alias, function));
- }
- /**
- * between
- */
- public <K, V> IWrapper<T> between(SFunction<K, V> function, Object val1, Object val2) {
- String sqlFieldName = getSqlFieldName(function);
- return between(sqlFieldName, val1, val2);
- }
- public <K, V> IWrapper<T> between(String alias, SFunction<K, V> function, Object val1, Object val2) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return between(sqlFieldName, val1, val2);
- }
- public <K, V> IWrapper<T> between(String sqlFieldName, Object val1, Object val2) {
- return between(ObjectUtil.isAllNotEmpty(val1, val2), sqlFieldName, val1, val2);
- }
- /**
- * eq
- */
- public <K, V> IWrapper<T> eq(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return eq(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> eq(SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(function);
- return eq(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> eq(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return eq(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> eq(String alias, SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return eq(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> eq(String sqlFieldName, Object value) {
- return eq(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- /**
- * ne
- */
- public <K, V> IWrapper<T> ne(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return ne(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> ne(SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(function);
- return ne(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> ne(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return ne(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> ne(String alias, SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return ne(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> ne(String sqlFieldName, Object value) {
- return ne(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- /**
- * ge
- */
- public <K, V> IWrapper<T> ge(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return ge(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> ge(SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(function);
- return ge(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> ge(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return ge(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> ge(String alias, SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return ge(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> ge(String sqlFieldName, Object value) {
- return ge(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- /**
- * gt
- */
- public <K, V> IWrapper<T> gt(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return gt(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> gt(SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(function);
- return gt(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> gt(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return gt(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> gt(String alias, SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return gt(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> gt(String sqlFieldName, Object value) {
- return gt(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- /**
- * le
- */
- public <K, V> IWrapper<T> le(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return le(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> le(SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(function);
- return le(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> le(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return le(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> le(String alias, SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return le(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> le(String sqlFieldName, Object value) {
- return le(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- /**
- * lt
- */
- public <K, V> IWrapper<T> lt(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return lt(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> lt(SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(function);
- return lt(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> lt(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return lt(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> lt(String alias, SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return lt(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> lt(String sqlFieldName, Object value) {
- return lt(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- /**
- * like
- */
- public <K, V> IWrapper<T> like(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return like(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> like(SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(function);
- return like(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> like(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return like(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> like(String alias, SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return like(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> like(String sqlFieldName, Object value) {
- return like(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- /**
- * notLike
- */
- public <K, V> IWrapper<T> notLike(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return notLike(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> notLike(SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(function);
- return notLike(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> notLike(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return notLike(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> notLike(String alias, SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return notLike(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> notLike(String sqlFieldName, Object value) {
- return notLike(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- /**
- * likeLeft
- */
- public <K, V> IWrapper<T> likeLeft(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return likeLeft(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> likeLeft(SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(function);
- return likeLeft(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> likeLeft(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return likeLeft(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> likeLeft(String alias, SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return likeLeft(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> likeLeft(String sqlFieldName, Object value) {
- return likeLeft(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- /**
- * likeRight
- */
- public <K, V> IWrapper<T> likeRight(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return likeRight(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> likeRight(SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(function);
- return likeRight(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> likeRight(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return likeRight(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> likeRight(String alias, SFunction<K, V> function, Object value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return likeRight(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> likeRight(String sqlFieldName, Object value) {
- return likeRight(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- /**
- * in
- */
- public <K, V> IWrapper<T> in(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return in(sqlFieldName, (Collection<?>) value);
- }
- public <K, V> IWrapper<T> in(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return in(sqlFieldName, (Collection<?>) value);
- }
- public <K, V> IWrapper<T> in(SFunction<K, V> function, Collection<?> value) {
- String sqlFieldName = getSqlFieldName(function);
- return in(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> in(String alias, SFunction<K, V> function, Collection<?> value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return in(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> in(SFunction<K, V> function, Object... value) {
- String sqlFieldName = getSqlFieldName(function);
- return in(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> in(String alias, SFunction<K, V> function, Object... value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return in(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> in(String sqlFieldName, Collection<?> value) {
- return in(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- @Override
- public IWrapper<T> in(String sqlFieldName, Object... value) {
- if (value.length == 0) {
- return this;
- }
- if (value[0] instanceof Collection) {
- return in(ObjectUtil.isNotEmpty(value[0]), sqlFieldName, Convert.toList(value[0]));
- }
- return in(sqlFieldName, Convert.toList(value));
- }
- /**
- * notIn
- */
- public <K, V> IWrapper<T> notIn(SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(fieldName);
- Object value = getValue(fieldName);
- return notIn(sqlFieldName, (Collection<?>) value);
- }
- public <K, V> IWrapper<T> notIn(String alias, SFunction<K, V> function) {
- String fieldName = getFieldName(function);
- String sqlFieldName = getSqlFieldName(alias, fieldName);
- Object value = getValue(fieldName);
- return notIn(sqlFieldName, (Collection<?>) value);
- }
- public <K, V> IWrapper<T> notIn(SFunction<K, V> function, Collection<?> value) {
- String sqlFieldName = getSqlFieldName(function);
- return notIn(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> notIn(String alias, SFunction<K, V> function, Collection<?> value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return notIn(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> notIn(SFunction<K, V> function, Object... value) {
- String sqlFieldName = getSqlFieldName(function);
- return notIn(sqlFieldName, value);
- }
- public <K, V> IWrapper<T> notIn(String alias, SFunction<K, V> function, Object... value) {
- String sqlFieldName = getSqlFieldName(alias, function);
- return notIn(sqlFieldName, value);
- }
- @Override
- public IWrapper<T> notIn(String sqlFieldName, Collection<?> value) {
- return notIn(ObjectUtil.isNotEmpty(value), sqlFieldName, value);
- }
- @Override
- public IWrapper<T> notIn(String sqlFieldName, Object... value) {
- if (value.length == 0) {
- return this;
- }
- if (value[0] instanceof Collection) {
- return notIn(ObjectUtil.isNotEmpty(value[0]), sqlFieldName, Convert.toList(value[0]));
- }
- return notIn(sqlFieldName, Convert.toList(value));
- }
- // =====================================================================
- // 私有方法
- // =====================================================================
- /**
- * 获取对象字段名
- * 例:getFieldName(Entity::getBaseId) -》 return "baseId"
- */
- @SneakyThrows
- private <K, V> String getFieldName(SFunction<K, V> function) {
- // SerializedLambda resolve = SerializedLambda.resolve(function);
- // return PropertyNamer.methodToProperty(resolve.getImplMethodName());
- Method method = function.getClass().getDeclaredMethod("writeReplace");
- method.setAccessible(true);
- SerializedLambda serializedLambda = (SerializedLambda) method.invoke(function);
- return PropertyNamer.methodToProperty(serializedLambda.getImplMethodName());
- }
- /**
- * 获取sql字段名
- * 例:getSqlFieldName(Entity::getBaseId) -》 return "base_id"
- */
- private <K, V> String getSqlFieldName(SFunction<K, V> function) {
- return StrUtil.toUnderlineCase(getFieldName(function));
- }
- /**
- * 获取sql字段名
- * 例:getSqlFieldName("s", Entity::getBaseId) -》 return "s.base_id"
- */
- private <K, V> String getSqlFieldName(String alias, SFunction<K, V> function) {
- return StrUtil.toUnderlineCase(alias + "." + getFieldName(function));
- }
- /**
- * 获取sql字段名
- * 例:getSqlFieldName("baseId") -》 return "base_id"
- */
- private String getSqlFieldName(String fieldName) {
- return StrUtil.toUnderlineCase(fieldName);
- }
- /**
- * 获取sql字段名
- * 例:getSqlFieldName("s", "baseId") -》 return "s.base_id"
- */
- private String getSqlFieldName(String alias, String fieldName) {
- return alias + "." + StrUtil.toUnderlineCase(fieldName);
- }
- /**
- * 获取字段值
- */
- private Object getValue(String fieldName) {
- if (entityMap == null) {
- throw new NullPointerException("需要传入提供字段值的对象");
- }
- return entityMap.get(fieldName);
- }
- /**
- * functions转String[]
- */
- @SafeVarargs
- private final <K, V> String[] getColumns(SFunction<K, V>... functions) {
- String[] columns = new String[functions.length];
- for (int i = 0; i < functions.length; i++) {
- columns[i] = getSqlFieldName(functions[i]);
- }
- return columns;
- }
- }
|