# 用法

## 依赖引入

#### Maven

```
<dependency>
    <groupId>com.taocares.commons</groupId>
    <artifactId>commons-jpa</artifactId>
</dependency>
```

{% hint style="info" %}
依赖版本由dependency-bom统一管理
{% endhint %}

## 基本用法

{% hint style="info" %}
Repository需要实现Spring Data JPA提供的`JpaSpecificationExecutor`接口
{% endhint %}

```java
Specification<EntityType> specification = SpecificationFactory.getSpecification(qo);
List<EntityType> result = repository.findAll(specification);
```

## 条件配置

```java
class Foo {
    String name;
    Date createTime;
    Bar bar;
}
class FooQo {
    @QueryCondition
    String name;
    @QueryCondition(field="bar.name")
    String barName;
    @QueryCondition(field="createTime", type=ConditionType.NOT_LESS_THAN)
    Date createTimeStart;
    @QueryCondition(field="createTime", type=ConditionType.NOT_GREATER_THAN)
    Date createTimeEnd;
}
```

{% hint style="info" %}
说明：

* 在QO的字段上使用`@QueryCondition`注解表示此字段为查询条件
* 当QO的字段和作用的目标字段不一致时，配置`field`属性
* 使用`.`将查询条件作用于嵌套对象的属性
* 配置`type`属性，支持更丰富的匹配方式
{% endhint %}

