refactor: 优化通用查询注解多字段模糊查询

This commit is contained in:
Charles7c 2023-09-12 22:33:36 +08:00
parent 36fda57d49
commit 375810772a
4 changed files with 10 additions and 10 deletions

View File

@ -43,10 +43,10 @@ public @interface Query {
QueryTypeEnum type() default QueryTypeEnum.EQUAL; QueryTypeEnum type() default QueryTypeEnum.EQUAL;
/** /**
* 多属性模糊查询仅支持 String 类型属性多个属性之间用逗号分隔 * 多属性模糊查询仅支持 String 类型属性
* <p> * <p>
* 例如@Query(blurry = "username,email") 表示根据用户名和邮箱模糊查询 * 例如@Query(blurry = {"username", "email"}) 表示根据用户名和邮箱模糊查询
* </p> * </p>
*/ */
String blurry() default ""; String[] blurry() default {};
} }

View File

@ -26,6 +26,7 @@ import lombok.extern.slf4j.Slf4j;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
@ -131,12 +132,11 @@ public class QueryHelper {
QueryWrapper<R> queryWrapper) { QueryWrapper<R> queryWrapper) {
// 解析多属性模糊查询 // 解析多属性模糊查询
// 如果设置了多属性模糊查询分割属性进行条件拼接 // 如果设置了多属性模糊查询分割属性进行条件拼接
String blurry = queryAnnotation.blurry(); String[] blurryPropertyArr = queryAnnotation.blurry();
if (StrUtil.isNotBlank(blurry)) { if (ArrayUtil.isNotEmpty(blurryPropertyArr)) {
String[] propertyArr = blurry.split(",");
queryWrapper.and(wrapper -> { queryWrapper.and(wrapper -> {
for (String property : propertyArr) { for (String blurryProperty : blurryPropertyArr) {
wrapper.or().like(StrUtil.toUnderlineCase(property), fieldValue); wrapper.or().like(StrUtil.toUnderlineCase(blurryProperty), fieldValue);
} }
}); });
return; return;

View File

@ -40,7 +40,7 @@ public class RoleQuery implements Serializable {
* 角色名称 * 角色名称
*/ */
@Schema(description = "角色名称", example = "测试人员") @Schema(description = "角色名称", example = "测试人员")
@Query(blurry = "name,code") @Query(blurry = {"name", "code"})
private String name; private String name;
/** /**

View File

@ -47,7 +47,7 @@ public class UserQuery implements Serializable {
* 用户名 * 用户名
*/ */
@Schema(description = "用户名", example = "zhangsan") @Schema(description = "用户名", example = "zhangsan")
@Query(blurry = "username,nickname,email,phone") @Query(blurry = {"username", "nickname", "email", "phone"})
private String username; private String username;
/** /**