ELADMIN 在线文档 ELADMIN 在线文档
  • 快速开始
  • 后端手册
  • 前端手册
  • 部署项目
常见问题
更新日志
支持项目
VPS推荐
在线体验 (opens new window)
  • 快速开始
  • 后端手册
  • 前端手册
  • 部署项目
常见问题
更新日志
支持项目
VPS推荐
在线体验 (opens new window)
帮瓦工 🌈 无需备案,境外服务器推荐
  • 快速开始

    • 简介
    • 快速了解
    • 快速开始
    • 特别鸣谢
  • 后端手册

    • 新增模块
    • 权限控制
    • 通用查询
      • 通用查询
      • 参数说明
      • 使用方式
    • 系统缓存
    • 异常处理
    • 系统日志
    • 数据权限
    • 定时任务
    • 代码生成
    • 运维管理
    • 系统工具
    • 其他杂项
  • 前端手册

    • 菜单路由
    • 自定义主键
    • 多字段排序
    • 隐藏操作按钮
    • 使用数据字典
    • 统一异常处理
    • 部分系统组件
  • 部署项目

    • 常规部署方式
    • 容器部署方式
目录

通用查询

# 通用查询

本项目对 Jpa 的查询进行了封装,现可以通过 @Query 注解实现简单的查询与复杂查询

简单查询:等于(默认)、大于等于、小于等于、左模糊、右模糊、中模糊、多字段模糊、NOT_EQUAL 、BETWEEN 、NOT_NULL。

复杂查询:包含(IN)查询、左连接、右连接等

# 参数说明

字段名称 字段描述 默认值
propName 对象的属性名,如果字段名称与实体字段一致,则可以省略 ""
type 查询方式,默认为 EQUAL
blurry 多字段模糊查询,值为实体字段名称 ""
joinName 关联实体的名称 ""
join 连接查询方式,左连接或者右连接 LEFT

# 使用方式

1、创建一个查询类 QueryCriteria

@Data
public class QueryCriteria {

    // 等于
    @Query
    private String a;

    // 左模糊
    @Query(type = Query.Type.LEFT_LIKE)
    private String b;

    // 右模糊
    @Query(type = Query.Type.RIGHT_LIKE)
    private String c;

    // 大于等于
    @Query(type = Query.Type.GREATER_THAN, propName = "createTime")
    private Timestamp startTime;

    // 小于等于
    @Query(type = Query.Type.LESS_THAN, propName = "createTime")
    private Timestamp endTime;

    // BETWEEN
    @Query(type = Query.Type.BETWEEN)
    private List<Timestamp> startTime;

    // 多字段模糊查询,blurry 为字段名称
    @Query(blurry = "a,b,c")
    private String blurry;

    // IN 查询
    @Query(type = Query.Type.IN)
    private List<String> d;

    // 左关联查询,left Join , joinName为关联实体名称 , propName为关联实体 字段
    @Query(joinName = "", propName="")
    private String e;

    // 右关联查询,right Join , joinName为关联实体名称 , propName为关联实体 字段
    @Query(joinName = "", propName="", join = Query.Join.RIGHT)
    private String f;

    // NOT_EQUAL 不等于
    @Query(type = Query.Type.NOT_EQUAL)
    private String g;

    // NOT_NULL 不为空
    @Query(type = Query.Type.NOT_NULL)
    private String g;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

关联查询参考:DictDetailQueryCriteria 类,下面代码为关联查询 dict 表里面的 name 字段

public class DictDetailQueryCriteria {
    @Query(propName = "name",joinName = "dict")
    private String dictName;
}

// propName = "name" 为关联实体 Dict 中的字段名称
public class Dict extends BaseEntity implements Serializable {
    @NotBlank
    @ApiModelProperty(value = "名称")
    private String name;
}

// joinName = "dict" 为关联实体名称
public class DictDetail extends BaseEntity implements Serializable {
    @JoinColumn(name = "dict_id")
    @ManyToOne(fetch=FetchType.LAZY)
    @ApiModelProperty(value = "字典", hidden = true)
    private Dict dict;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

2、在控制器中使用

// Pageable 分页查询
public ResponseEntity query(QueryCriteria criteria, Pageable pageable){
    return new ResponseEntity(service.queryAll(criteria,pageable), HttpStatus.OK);
}
1
2
3
4

3、Service 中查询

@Override
public Object queryAll(QueryCriteria criteria, Pageable pageable){
    Page<实体> page = repository.findAll(((root, criteriaQuery, cb) -> QueryHelp.getPredicate(root, criteria, cb)),pageable);
    return page;
}
1
2
3
4
5

提示

如果需要添加一个字段查询,只需要在查询类 QueryCriteria 中添加就可以了,可节省大量时间。

源码可以查看 eladmin-common 模块中的 me.zhengjie.annotation.Query 与 me.zhengjie.utils.QueryHelp

帮助我们改善此页面! (opens new window)
上次更新: 2024/09/11, 06:38:28
权限控制
系统缓存

← 权限控制 系统缓存→

Theme by Vdoing | Copyright © 2018-2025 知了小站
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
帮瓦工