diff --git a/src/main/java/com/lanyuanxiaoyao/service/template/controller/Query.java b/src/main/java/com/lanyuanxiaoyao/service/template/controller/Query.java index 115e7ce..cd767d1 100644 --- a/src/main/java/com/lanyuanxiaoyao/service/template/controller/Query.java +++ b/src/main/java/com/lanyuanxiaoyao/service/template/controller/Query.java @@ -122,6 +122,30 @@ public class Query { * 指定字段不模糊匹配的条件映射(字段名 -> 匹配值) */ private Map notLike; + /** + * 指定字段包含指定字符串的条件映射(字段名 -> 包含值) + */ + private Map contain; + /** + * 指定字段不包含指定字符串的条件映射(字段名 -> 不包含值) + */ + private Map notContain; + /** + * 指定字段以指定字符串开头的条件映射(字段名 -> 开头值) + */ + private Map startWith; + /** + * 指定字段不以指定字符串开头的条件映射(字段名 -> 不开头值) + */ + private Map notStartWith; + /** + * 指定字段以指定字符串结尾的条件映射(字段名 -> 结尾值) + */ + private Map endWith; + /** + * 指定字段不以指定字符串结尾的条件映射(字段名 -> 不结尾值) + */ + private Map notEndWith; /** * 指定字段大于条件的映射(字段名 -> 值) */ diff --git a/src/main/java/com/lanyuanxiaoyao/service/template/service/SimpleServiceSupport.java b/src/main/java/com/lanyuanxiaoyao/service/template/service/SimpleServiceSupport.java index e47084e..96609e2 100644 --- a/src/main/java/com/lanyuanxiaoyao/service/template/service/SimpleServiceSupport.java +++ b/src/main/java/com/lanyuanxiaoyao/service/template/service/SimpleServiceSupport.java @@ -182,7 +182,7 @@ public abstract class SimpleServiceSupport implemen if (ObjectHelper.isEmpty(column)) { throw new IllegalArgumentException("Column cannot be blank"); } - var columns = column.split("/"); + var columns = column.split("\\."); Path path = root.get(columns[0]); for (int i = 1; i < columns.length; i++) { path = path.get(columns[i]); @@ -282,6 +282,48 @@ public abstract class SimpleServiceSupport implemen predicates.add(builder.notLike(column(root, column), value)); }); } + if (ObjectHelper.isNotEmpty(queryable.getContain())) { + queryable.getContain().forEach((column, value) -> { + var path = this.column(root, column); + checkString(path, value, column); + predicates.add(builder.like(column(root, column), "%" + value + "%")); + }); + } + if (ObjectHelper.isNotEmpty(queryable.getNotContain())) { + queryable.getNotContain().forEach((column, value) -> { + var path = this.column(root, column); + checkString(path, value, column); + predicates.add(builder.notLike(column(root, column), "%" + value + "%")); + }); + } + if (ObjectHelper.isNotEmpty(queryable.getStartWith())) { + queryable.getStartWith().forEach((column, value) -> { + var path = this.column(root, column); + checkString(path, value, column); + predicates.add(builder.like(column(root, column), value + "%")); + }); + } + if (ObjectHelper.isNotEmpty(queryable.getNotStartWith())) { + queryable.getNotStartWith().forEach((column, value) -> { + var path = this.column(root, column); + checkString(path, value, column); + predicates.add(builder.notLike(column(root, column), value + "%")); + }); + } + if (ObjectHelper.isNotEmpty(queryable.getEndWith())) { + queryable.getEndWith().forEach((column, value) -> { + var path = this.column(root, column); + checkString(path, value, column); + predicates.add(builder.like(column(root, column), "%" + value)); + }); + } + if (ObjectHelper.isNotEmpty(queryable.getNotEndWith())) { + queryable.getNotEndWith().forEach((column, value) -> { + var path = this.column(root, column); + checkString(path, value, column); + predicates.add(builder.notLike(column(root, column), "%" + value)); + }); + } if (ObjectHelper.isNotEmpty(queryable.getGreat())) { queryable.getGreat().forEach((column, value) -> { var path = this.>column(root, column);