Criteria
功能
完全隐藏了SQL,使用面向对象的方式查询,简称QBC/QBE。
声明
1 | Criteria criteria = session.createCriteria(POJO类名); //from |
常用方法
| 常用方法 | 说明 | 等价SQL |
|---|---|---|
| session.createCriteria(POJO类名); | 选择表 | from |
| criteria.createCriteria(“POJO类名”); | 选择其他表 | from |
| setProjection(Projection) | 选择一个统计列 | select |
| setProjection(ProjectionList) | 选择多个列 | select |
| setProjection(Property) | 选择一个列 | select |
| setProjection(PropertyProjection) | 分组 | group by |
| add(Criterion) | 添加一个查询条件 | where |
| addOrder(Order) | 添加一个排序条件 | order by |
| createAlias() | 创建关联查询 | join |
| createCriteria(String) | 关联条件 | on |
| setFirstResult(int) | 从第几条开始返回 | limit第一个参数 |
| setMaxResults(int) | 返回几条数据 | limit第二个参数 |
Projection
投影操作,包含统计函数
以下为Projections的常用静态方法(Projections包含静态方法,返回Projection对象)
| 常用方法 | 说明 |
|---|---|
| avg(String) | 该列平均值 |
| count(String) | 该列行数 |
| countDistinct(String) | 该列去重后行数 |
| distinct(Projection) | 去重 |
| max(String) | 该列最大值 |
| min(String) | 该列最小值 |
| rowCount() | 结果行数 |
| sum(String) | 该列求和 |
| projectionList() | 创建Projection列表 |
ProjectionList
通过Projection.projectionList()静态方法
Property
表示一列
1 | Property.forName(String columnName) |
PropertyProjection
以改列分组
1 | Projections.groupProperty(String columnName); |
Order
以该字段为序排序
以下为静态方法
| 常用方法 | 说明 |
|---|---|
| asc(String) | 增序 |
| desc(String) | 降序 |
| ignoreCase() | 忽略大小写 |
Criterion
Criterion表示查询条件,来自Restrictions类的静态方法
Restrictions类的常用方法
| 常用方法 | 说明 | 描述 |
|---|---|---|
| eq(String, Object) | 使字段名等于值 | string = object |
| ne(String, Object) | string != object | |
| allEq(Map) | 多个=条件 | key1=value1 and key2=value2 and … |
| gt(String, Object) | > | |
| ge(String, Object | >= | |
| lt(String, Object) | < | |
| le(String, Object) | <= | |
| between(String, Object, Object | 使字段名在两个值之间 | string between object1 and object2 |
| in(String, Collection) | in(value1, value2, …) | |
| like(String, Object) | 支持通配符 | like(“a%”) |
| ilike(String, Object) | like不区分大小写 |
DetachedCriteria
Criteria来自session,脱离session后即失效。
DetachedCriteria实现在session外部创建条件
声明
1 | DetachedCriteria d = DetachedCriteria.forClass(POJO类名); |
执行
需将DetachedCriteria转换为Criteria后再执行
1 | Criteria c = d.getExecutableCriteria(session); |
执行查询
1 | List<T> criteria.list(); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AlMirai!