Skip to content
likly edited this page Jul 6, 2021 · 2 revisions

Final Annotation Query

Final Annotation Query提供了丰富的查询条件(Criterion)和更新操作(Update)。

Query

Final Annotation Query提供编码和注解两种方式来构建查询条件。

如当需要构建以下查询条件时:

WHERE name = #{value} AND age BETWEEN #{min} AND #{max}
  • 编码
new Query().where(
	name.eq("name"),
    age.between(min,max)
);
  • 注解
public class MyQuery implements IQuery{
    @Equal
    private String name;
    @Between
    private BetweenValue<Integer> age;
    
    //setter and getter
    //...
}

支持的Criterion对下表所示:

SQL 方法 注解
column IS NULL isNull() @IsNull
column IS NOT NULL isNotNull() @IsNotNull
column = #{value} eq(value) @Equal
column != #{value} neq(value) @NotEqual
column < #{value} lt(value) @LessThan
column <= #{value} lte(value) @LessThanEqual
cloumn > #{value} gt(value) @GreatThan
cloumn >= #{value} gte(value) @GreatThanEqual
column LIKE #{value} like(value) @Like
column NOT LIKE #{value} notLike(value) @NotLike
column LIKE CONCAT('%',#{value},'%') contains(value) @Contains
column NOT LIKE CONCAT('%',#{value},'%') notContains(value) @NotContains
column LIKE CONCAT(#{value},'%') startsWith(value) @StartsWith
column NOT LIKE CONCAT(#{value},'%') notStartsWith(value) @NotStartsWith
column LIKE CONCAT('%',#{value}) endsWith(value) @EndsWith
column NOT LIKE CONCAT('%',#{value}) notEndsWith(value) @NotEndsWith
column IN (val[,val]...) in(values) @In
column NOT IN (val[,val]...) nin(values) @NotIn
column BETWEEN #{min} AND #{max} between(min,max) @Between
column NOT BETWEEN #{min} AND #{max} notBetween(min,max) @NotBetween
JSON_CONTAINS(column, value[,path]) jsonContains(value[,path]) @JsonContains
!JSON_CONTAINS(column, value[,path]) notJsonContains(values[,path]) @NotJsonContains

Clone this wiki locally