diff --git a/lib/jpaHelper-release.jar b/lib/jpaHelper-release.jar
deleted file mode 100644
index 7e04284..0000000
Binary files a/lib/jpaHelper-release.jar and /dev/null differ
diff --git a/lib/jpaHelper/.gitignore b/lib/jpaHelper/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/lib/jpaHelper/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/lib/jpaHelper/pom.xml b/lib/jpaHelper/pom.xml
new file mode 100644
index 0000000..587f689
--- /dev/null
+++ b/lib/jpaHelper/pom.xml
@@ -0,0 +1,56 @@
+
+ 4.0.0
+ jpaHelper
+ jar
+ release
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.3.3
+
+
+
+
+ 21
+
+
+
+
+ cn.hutool
+ hutool-all
+ 5.8.25
+
+
+ com.mysql
+ mysql-connector-j
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+
+ io.swagger.core.v3
+ swagger-annotations-jakarta
+ 2.2.19
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ ${java.version}
+ ${java.version}
+ ${project.build.sourceEncoding}
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/jpaHelper/src/main/java/com/cym/bean/CreateTime.java b/lib/jpaHelper/src/main/java/com/cym/bean/CreateTime.java
new file mode 100644
index 0000000..6b71c20
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/bean/CreateTime.java
@@ -0,0 +1,12 @@
+package com.cym.bean;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.FIELD })
+public @interface CreateTime {
+
+}
diff --git a/lib/jpaHelper/src/main/java/com/cym/bean/InitValue.java b/lib/jpaHelper/src/main/java/com/cym/bean/InitValue.java
new file mode 100644
index 0000000..0060545
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/bean/InitValue.java
@@ -0,0 +1,14 @@
+package com.cym.bean;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.FIELD })
+public @interface InitValue {
+
+ String value();
+
+}
diff --git a/lib/jpaHelper/src/main/java/com/cym/bean/OrderBy.java b/lib/jpaHelper/src/main/java/com/cym/bean/OrderBy.java
new file mode 100644
index 0000000..8ae5d55
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/bean/OrderBy.java
@@ -0,0 +1,48 @@
+package com.cym.bean;
+
+public class OrderBy {
+ Direction direction;
+ String column;
+ String orderByStr;
+
+
+
+ public static enum Direction {
+ ASC, DESC;
+ }
+
+ public OrderBy(Direction direction, String column) {
+ this.direction = direction;
+ this.column = column;
+ }
+
+ public OrderBy() {
+
+ }
+
+
+ public String getOrderByStr() {
+ return orderByStr;
+ }
+
+ public void setOrderByStr(String orderByStr) {
+ this.orderByStr = orderByStr;
+ }
+
+ public Direction getDirection() {
+ return direction;
+ }
+
+ public void setDirection(Direction direction) {
+ this.direction = direction;
+ }
+
+ public String getColumn() {
+ return column;
+ }
+
+ public void setColumn(String column) {
+ this.column = column;
+ }
+
+}
diff --git a/lib/jpaHelper/src/main/java/com/cym/bean/Page.java b/lib/jpaHelper/src/main/java/com/cym/bean/Page.java
new file mode 100644
index 0000000..19c873b
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/bean/Page.java
@@ -0,0 +1,99 @@
+package com.cym.bean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
+@Schema(description = " 分页返回类")
+public class Page {
+ @Schema(description = "总记录数")
+ Long total = 0l;
+ @Schema(description = "起始页,从1开始")
+ Integer pageNum = 1;
+ @Schema(description = "每页记录数,默认为10")
+ Integer pageSize = 10;
+
+ @Schema(description = "起始编号")
+ Integer startRow;
+ @Schema(description = "结束编号")
+ Integer endRow;
+ @Schema(description = "总页数")
+ Integer pages;
+
+ @Schema(description = "内容列表")
+ List list;
+
+ public Page() {
+
+ }
+
+ public Page(Integer pageNum, Integer pageSize) {
+ this.setPageNum(pageNum);
+ this.setPageSize(pageSize);
+ }
+
+ /**
+ * 清空List
+ */
+ public void clearList() {
+ list = new ArrayList<>();
+ }
+
+ public Long getTotal() {
+ return total;
+ }
+
+ public void setTotal(Long total) {
+ this.total = total;
+ }
+
+ public Integer getPageNum() {
+ return pageNum;
+ }
+
+ public void setPageNum(Integer pageNum) {
+ this.pageNum = pageNum;
+ }
+
+ public Integer getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(Integer pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ public List getList() {
+ return list;
+ }
+
+ public void setList(List list) {
+ this.list = list;
+ }
+
+ public Integer getStartRow() {
+ return startRow;
+ }
+
+ public void setStartRow(Integer startRow) {
+ this.startRow = startRow;
+ }
+
+ public Integer getEndRow() {
+ return endRow;
+ }
+
+ public void setEndRow(Integer endRow) {
+ this.endRow = endRow;
+ }
+
+ public Integer getPages() {
+ return pages;
+ }
+
+ public void setPages(Integer pages) {
+ this.pages = pages;
+ }
+
+}
diff --git a/lib/jpaHelper/src/main/java/com/cym/bean/Sort.java b/lib/jpaHelper/src/main/java/com/cym/bean/Sort.java
new file mode 100644
index 0000000..1835994
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/bean/Sort.java
@@ -0,0 +1,108 @@
+package com.cym.bean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.cym.bean.OrderBy.Direction;
+import com.cym.reflection.ReflectionUtil;
+import com.cym.reflection.SerializableFunction;
+import cn.hutool.core.util.StrUtil;
+
+public class Sort {
+ List orderList = new ArrayList<>();
+
+ public Sort() {
+
+ }
+
+ public Sort(String column, Direction direction) {
+ OrderBy order = new OrderBy();
+ order.setColumn(column);
+ order.setDirection(direction);
+
+ orderList.add(order);
+ }
+
+ public Sort(List orderList) {
+ this.orderList.addAll(orderList);
+ }
+
+ public Sort(String orderByStr) {
+ OrderBy order = new OrderBy();
+ order.setOrderByStr(orderByStr);
+
+ orderList.add(order);
+ }
+
+ public Sort(SerializableFunction column, Direction direction) {
+ OrderBy order = new OrderBy();
+ order.setColumn(ReflectionUtil.getFieldName(column));
+ order.setDirection(direction);
+
+ orderList.add(order);
+ }
+
+ public Sort add(String column, Direction direction) {
+ OrderBy order = new OrderBy();
+ order.setColumn(column);
+ order.setDirection(direction);
+
+ orderList.add(order);
+
+ return this;
+ }
+
+ public Sort add(SerializableFunction column, Direction direction) {
+ OrderBy order = new OrderBy();
+ order.setColumn(ReflectionUtil.getFieldName(column));
+ order.setDirection(direction);
+
+ orderList.add(order);
+
+ return this;
+ }
+
+ public Sort add(String orderByStr) {
+ OrderBy order = new OrderBy();
+ order.setOrderByStr(orderByStr);
+
+ orderList.add(order);
+
+ return this;
+ }
+
+ public String toString() {
+ List sqlList = new ArrayList<>();
+ for (OrderBy order : orderList) {
+ if (StrUtil.isEmpty(order.getOrderByStr())) {
+ String sql = "`" + StrUtil.toUnderlineCase(order.getColumn()) + "`";
+
+ if (order.getDirection() == Direction.ASC) {
+ sql += " ASC";
+ }
+ if (order.getDirection() == Direction.DESC) {
+ sql += " DESC";
+ }
+
+ sqlList.add(sql);
+ } else {
+ sqlList.add(order.getOrderByStr());
+ }
+ }
+ if (sqlList.size() > 0) {
+ return " ORDER BY " + StrUtil.join(",", sqlList);
+ } else {
+ return "";
+ }
+
+ }
+
+ public List getOrderList() {
+ return orderList;
+ }
+
+ public void setOrderList(List orderList) {
+ this.orderList = orderList;
+ }
+
+}
diff --git a/lib/jpaHelper/src/main/java/com/cym/bean/Update.java b/lib/jpaHelper/src/main/java/com/cym/bean/Update.java
new file mode 100644
index 0000000..d79722b
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/bean/Update.java
@@ -0,0 +1,35 @@
+package com.cym.bean;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.cym.reflection.ReflectionUtil;
+import com.cym.reflection.SerializableFunction;
+
+public class Update {
+
+ Map sets;
+
+ public Update() {
+ sets = new HashMap();
+ }
+
+ public Update set(String key, Object value) {
+ sets.put(key, value);
+ return this;
+ }
+
+ public Update set(SerializableFunction property, Object value) {
+ sets.put(ReflectionUtil.getFieldName(property), value);
+ return this;
+ }
+
+ public Map getSets() {
+ return sets;
+ }
+
+ public void setSets(Map sets) {
+ this.sets = sets;
+ }
+
+}
diff --git a/lib/jpaHelper/src/main/java/com/cym/bean/UpdateTime.java b/lib/jpaHelper/src/main/java/com/cym/bean/UpdateTime.java
new file mode 100644
index 0000000..fa243b1
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/bean/UpdateTime.java
@@ -0,0 +1,12 @@
+package com.cym.bean;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.FIELD })
+public @interface UpdateTime {
+
+}
diff --git a/lib/jpaHelper/src/main/java/com/cym/reflection/ReflectionUtil.java b/lib/jpaHelper/src/main/java/com/cym/reflection/ReflectionUtil.java
new file mode 100644
index 0000000..91d3e80
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/reflection/ReflectionUtil.java
@@ -0,0 +1,65 @@
+package com.cym.reflection;
+
+import java.beans.Introspector;
+import java.lang.invoke.SerializedLambda;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.springframework.util.ClassUtils;
+import org.springframework.util.ReflectionUtils;
+
+public class ReflectionUtil {
+
+ private static Map, Field> cache = new ConcurrentHashMap<>();
+
+ public static String getFieldName(SerializableFunction function) {
+ Field field = ReflectionUtil.getField(function);
+ return field.getName();
+ }
+
+ public static Field getField(SerializableFunction, ?> function) {
+ return cache.computeIfAbsent(function, ReflectionUtil::findField);
+ }
+
+ public static Field findField(SerializableFunction, ?> function) {
+ Field field = null;
+ String fieldName = null;
+ try {
+ // 第1步 获取SerializedLambda
+ Method method = function.getClass().getDeclaredMethod("writeReplace");
+ method.setAccessible(Boolean.TRUE);
+ SerializedLambda serializedLambda = (SerializedLambda) method.invoke(function);
+ // 第2步 implMethodName 即为Field对应的Getter方法名
+ String implMethodName = serializedLambda.getImplMethodName();
+ if (implMethodName.startsWith("get") && implMethodName.length() > 3) {
+ fieldName = Introspector.decapitalize(implMethodName.substring(3));
+
+ } else if (implMethodName.startsWith("is") && implMethodName.length() > 2) {
+ fieldName = Introspector.decapitalize(implMethodName.substring(2));
+ } else if (implMethodName.startsWith("lambda$")) {
+ throw new IllegalArgumentException("SerializableFunction不能传递lambda表达式,只能使用方法引用");
+
+ } else {
+ throw new IllegalArgumentException(implMethodName + "不是Getter方法引用");
+ }
+ // 第3步 获取的Class是字符串,并且包名是“/”分割,需要替换成“.”,才能获取到对应的Class对象
+ String declaredClass = serializedLambda.getImplClass().replace("/", ".");
+ Class> aClass = Class.forName(declaredClass, false, ClassUtils.getDefaultClassLoader());
+
+ // 第4步 Spring 中的反射工具类获取Class中定义的Field
+ field = ReflectionUtils.findField(aClass, fieldName);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ // 第5步 如果没有找到对应的字段应该抛出异常
+ if (field != null) {
+ return field;
+ }
+ throw new NoSuchFieldError(fieldName);
+ }
+
+
+}
\ No newline at end of file
diff --git a/lib/jpaHelper/src/main/java/com/cym/reflection/SerializableFunction.java b/lib/jpaHelper/src/main/java/com/cym/reflection/SerializableFunction.java
new file mode 100644
index 0000000..4a3bb6d
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/reflection/SerializableFunction.java
@@ -0,0 +1,9 @@
+package com.cym.reflection;
+
+import java.io.Serializable;
+import java.util.function.Function;
+
+@FunctionalInterface
+public interface SerializableFunction extends Function, Serializable {
+
+}
\ No newline at end of file
diff --git a/lib/jpaHelper/src/main/java/com/cym/utils/BeanExtUtil.java b/lib/jpaHelper/src/main/java/com/cym/utils/BeanExtUtil.java
new file mode 100644
index 0000000..9952ed3
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/utils/BeanExtUtil.java
@@ -0,0 +1,58 @@
+package com.cym.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.cym.bean.Page;
+import cn.hutool.core.bean.BeanUtil;
+
+public class BeanExtUtil {
+
+ /**
+ * 根据List对象属性批量创建对应的Class List对象
+ *
+ * @param list
+ * @param clazz
+ * @return
+ */
+ public static List copyListByProperties(List> list, Class clazz) {
+ if (list == null) {
+ return null;
+ }
+
+ List rsList = new ArrayList<>();
+ for (Object source : list) {
+ rsList.add((T) BeanUtil.copyProperties(source, clazz));
+ }
+
+ return rsList;
+ }
+
+
+ /**
+ * 根据PageResp对象属性批量创建对应的Class PageResp对象
+ *
+ * @param pageResp
+ * @param clazz
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ public static Page copyPageByProperties(Page> page, Class clazz) {
+ Page pageNew = copyBeanByProperties(page, Page.class);
+ pageNew.setList(copyListByProperties(page.getList(), clazz));
+ return pageNew;
+ }
+
+ /**
+ * 按照Bean对象属性创建对应的Class对象
+ *
+ */
+ public static T copyBeanByProperties(Object source, Class tClass) {
+ return BeanUtil.copyProperties(source, tClass);
+ }
+
+
+
+
+
+}
diff --git a/lib/jpaHelper/src/main/java/com/cym/utils/Condition.java b/lib/jpaHelper/src/main/java/com/cym/utils/Condition.java
new file mode 100644
index 0000000..784a916
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/utils/Condition.java
@@ -0,0 +1,53 @@
+package com.cym.utils;
+
+public class Condition {
+ public Condition(String column, String operation, Object value) {
+ this.column = column;
+ this.operation = operation;
+ this.value = value;
+ }
+
+ public Condition(String condition) {
+ this.condition = condition;
+ }
+
+ String column;
+ String operation;
+ Object value;
+ String condition;
+
+
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public void setCondition(String condition) {
+ this.condition = condition;
+ }
+
+ public String getColumn() {
+ return column;
+ }
+
+ public void setColumn(String column) {
+ this.column = column;
+ }
+
+ public String getOperation() {
+ return operation;
+ }
+
+ public void setOperation(String operation) {
+ this.operation = operation;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+}
diff --git a/lib/jpaHelper/src/main/java/com/cym/utils/ConditionAndWrapper.java b/lib/jpaHelper/src/main/java/com/cym/utils/ConditionAndWrapper.java
new file mode 100644
index 0000000..cb9942a
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/utils/ConditionAndWrapper.java
@@ -0,0 +1,351 @@
+package com.cym.utils;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import com.cym.reflection.ReflectionUtil;
+import com.cym.reflection.SerializableFunction;
+
+/**
+ * 查询语句生成器 AND连接
+ *
+ */
+public class ConditionAndWrapper extends ConditionWrapper {
+
+ public ConditionAndWrapper() {
+ andLink = true;
+ }
+
+ public ConditionAndWrapper and(ConditionWrapper conditionWrapper) {
+ list.add(conditionWrapper);
+ return this;
+ }
+
+ /**
+ * 自由撰写条件
+ *
+ * @param condition 条件
+ * @return ConditionWrapper
+ */
+ public ConditionAndWrapper custom(String condition) {
+ super.custom(condition);
+ return this;
+ }
+
+
+ /**
+ * 等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionWrapper
+ */
+ public ConditionAndWrapper eq(String column, Object params) {
+ super.eq(column, params);
+ return this;
+ }
+
+ /**
+ * 等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionWrapper
+ */
+ public ConditionAndWrapper eq(SerializableFunction column, Object params) {
+ super.eq(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 不等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper ne(String column, Object params) {
+ super.ne(column, params);
+ return this;
+ }
+
+ /**
+ * 不等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper ne(SerializableFunction column, Object params) {
+ super.ne(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 小于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper lt(String column, Object params) {
+ super.lt(column, params);
+ return this;
+ }
+
+ /**
+ * 小于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper lt(SerializableFunction column, Object params) {
+ super.lt(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 小于或等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper lte(String column, Object params) {
+ super.lte(column, params);
+ return this;
+ }
+
+ /**
+ * 小于或等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper lte(SerializableFunction column, Object params) {
+ super.lte(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 大于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper gt(String column, Object params) {
+ super.gt(column, params);
+ return this;
+ }
+
+ /**
+ * 大于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper gt(SerializableFunction column, Object params) {
+ super.gt(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 大于或等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper gte(String column, Object params) {
+ super.gte(column, params);
+ return this;
+ }
+
+ /**
+ * 大于或等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper gte(SerializableFunction column, Object params) {
+ super.gte(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 相似于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper like(String column, String params) {
+ super.like(column, params);
+ return this;
+ }
+
+ /**
+ * 相似于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper like(SerializableFunction column, String params) {
+ super.like(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper in(String column, Collection> params) {
+ super.in(column, params);
+ return this;
+ }
+
+ /**
+ * 在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper in(SerializableFunction column, Collection> params) {
+ super.in(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper in(String column, Object[] params) {
+ super.in(column, Arrays.asList(params));
+ return this;
+ }
+
+ /**
+ * 在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper in(SerializableFunction column, Object[] params) {
+ super.in(ReflectionUtil.getFieldName(column), Arrays.asList(params));
+ return this;
+ }
+
+ /**
+ * 不在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper nin(String column, Collection> params) {
+ super.nin(column, params);
+ return this;
+ }
+
+ /**
+ * 不在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper nin(SerializableFunction column, Collection> params) {
+ super.nin(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 不在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper nin(String column, Object[] params) {
+ super.nin(column, Arrays.asList(params));
+ return this;
+ }
+
+ /**
+ * 不在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper nin(SerializableFunction column, Object[] params) {
+ super.nin(ReflectionUtil.getFieldName(column), Arrays.asList(params));
+ return this;
+ }
+
+ /**
+ * 为空
+ *
+ * @param
+ *
+ * @param column 字段
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper isNull(String column) {
+ super.isNull(column);
+ return this;
+ }
+
+ /**
+ * 为空
+ *
+ * @param
+ *
+ * @param column 字段
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper isNull(SerializableFunction column) {
+ super.isNull(ReflectionUtil.getFieldName(column));
+ return this;
+ }
+
+ /**
+ * 不为空
+ *
+ * @param
+ *
+ * @param column 字段
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper isNotNull(String column) {
+ super.isNotNull(column);
+ return this;
+ }
+
+ /**
+ * 不为空
+ *
+ * @param
+ *
+ * @param column 字段
+ * @return ConditionAndWrapper
+ */
+ public ConditionAndWrapper isNotNull(SerializableFunction column) {
+ super.isNotNull(ReflectionUtil.getFieldName(column));
+ return this;
+ }
+}
diff --git a/lib/jpaHelper/src/main/java/com/cym/utils/ConditionOrWrapper.java b/lib/jpaHelper/src/main/java/com/cym/utils/ConditionOrWrapper.java
new file mode 100644
index 0000000..9a3e887
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/utils/ConditionOrWrapper.java
@@ -0,0 +1,332 @@
+package com.cym.utils;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import com.cym.reflection.ReflectionUtil;
+import com.cym.reflection.SerializableFunction;
+
+/**
+ * 查询语句生成器 OR连接
+ *
+ */
+public class ConditionOrWrapper extends ConditionWrapper {
+
+ public ConditionOrWrapper() {
+ andLink = false;
+ }
+
+ public ConditionOrWrapper or(ConditionWrapper conditionWrapper) {
+ list.add(conditionWrapper);
+ return this;
+ }
+
+ /**
+ * 自由撰写条件
+ *
+ * @param condition 条件
+ * @return ConditionWrapper
+ */
+ public ConditionOrWrapper custom(String condition) {
+ super.custom(condition);
+ return this;
+ }
+
+ /**
+ * 等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionWrapper
+ */
+ public ConditionOrWrapper eq(String column, Object params) {
+ super.eq(column, params);
+ return this;
+ }
+ /**
+ * 等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionWrapper
+ */
+ public ConditionOrWrapper eq(SerializableFunction column, Object params) {
+ super.eq(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+ /**
+ * 不等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper ne(String column, Object params) {
+ super.ne(column, params);
+ return this;
+ }
+
+ /**
+ * 不等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper ne(SerializableFunction column, Object params) {
+ super.ne(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 小于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper lt(String column, Object params) {
+ super.lt(column, params);
+ return this;
+ }
+ /**
+ * 小于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper lt(SerializableFunction column, Object params) {
+ super.lt(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+ /**
+ * 小于或等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper lte(String column, Object params) {
+ super.lte(column, params);
+ return this;
+ }
+ /**
+ * 小于或等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper lte(SerializableFunction column, Object params) {
+ super.lte(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+ /**
+ * 大于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper gt(String column, Object params) {
+ super.gt(column, params);
+ return this;
+ }
+ /**
+ * 大于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper gt(SerializableFunction column, Object params) {
+ super.gt(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+ /**
+ * 大于或等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper gte(String column, Object params) {
+ super.gte(column, params);
+ return this;
+ }
+ /**
+ * 大于或等于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper gte(SerializableFunction column, Object params) {
+ super.gte(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+ /**
+ * 相似于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper like(String column, String params) {
+ super.like(column, params);
+ return this;
+ }
+ /**
+ * 相似于
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper like(SerializableFunction column, String params) {
+ super.like(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+ /**
+ * 在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper in(String column, Collection> params) {
+ super.in(column, params);
+ return this;
+ }
+ /**
+ * 在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper in(SerializableFunction column, Collection> params) {
+ super.in(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper in(String column, Object[] params) {
+ super.in(column, Arrays.asList(params));
+ return this;
+ }
+
+ /**
+ * 在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper in(SerializableFunction column, Object[] params) {
+ super.in(ReflectionUtil.getFieldName(column), Arrays.asList(params));
+ return this;
+ }
+
+ /**
+ * 不在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper nin(String column, Collection> params) {
+ super.nin(column, params);
+ return this;
+ }
+ /**
+ * 不在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper nin(SerializableFunction column, Collection> params) {
+ super.nin(ReflectionUtil.getFieldName(column), params);
+ return this;
+ }
+
+ /**
+ * 不在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper nin(String column, Object[] params) {
+ super.nin(column, Arrays.asList(params));
+ return this;
+ }
+ /**
+ * 不在其中
+ *
+ * @param column 字段
+ * @param params 参数
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper nin(SerializableFunction column, Object[] params) {
+ super.nin(ReflectionUtil.getFieldName(column), Arrays.asList(params));
+ return this;
+ }
+ /**
+ * 为空
+ *
+ * @param
+ *
+ * @param column 字段
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper isNull(String column) {
+ super.isNull(column);
+ return this;
+ }
+ /**
+ * 为空
+ *
+ * @param
+ *
+ * @param column 字段
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper isNull(SerializableFunction column) {
+ super.isNull(ReflectionUtil.getFieldName(column));
+ return this;
+ }
+
+ /**
+ * 不为空
+ *
+ * @param
+ *
+ * @param column 字段
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper isNotNull(String column) {
+ super.isNotNull(column);
+ return this;
+ }
+ /**
+ * 不为空
+ *
+ * @param
+ *
+ * @param column 字段
+ * @return ConditionOrWrapper
+ */
+ public ConditionOrWrapper isNotNull(SerializableFunction column) {
+ super.isNotNull(ReflectionUtil.getFieldName(column));
+ return this;
+ }
+}
diff --git a/lib/jpaHelper/src/main/java/com/cym/utils/ConditionWrapper.java b/lib/jpaHelper/src/main/java/com/cym/utils/ConditionWrapper.java
new file mode 100644
index 0000000..6d7ed6c
--- /dev/null
+++ b/lib/jpaHelper/src/main/java/com/cym/utils/ConditionWrapper.java
@@ -0,0 +1,247 @@
+package com.cym.utils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * 查询语句生成器
+ *
+ * @author CYM
+ *
+ */
+public abstract class ConditionWrapper {
+ boolean andLink;
+
+ List