mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-08 09:38:26 +08:00
refactor: 通过 builder 构建 FieldQuery 对象。
This commit is contained in:
parent
fbe722316a
commit
19644951a0
@ -15,29 +15,116 @@
|
|||||||
*/
|
*/
|
||||||
package com.mybatisflex.core.field;
|
package com.mybatisflex.core.field;
|
||||||
|
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
public class FieldQuery implements Serializable {
|
public class FieldQuery implements Serializable {
|
||||||
|
|
||||||
private String field;
|
private String className;
|
||||||
private QueryWrapper queryWrapper;
|
private String fieldName;
|
||||||
|
private FieldType fieldType = FieldType.AUTO;
|
||||||
|
private boolean prevent;
|
||||||
|
private QueryBuilder queryBuilder;
|
||||||
|
|
||||||
public String getField() {
|
public String getClassName() {
|
||||||
return field;
|
return className;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setField(String field) {
|
public void setClassName(String className) {
|
||||||
this.field = field;
|
this.className = className;
|
||||||
}
|
}
|
||||||
|
|
||||||
public QueryWrapper getQueryWrapper() {
|
public String getFieldName() {
|
||||||
return queryWrapper;
|
return fieldName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setQueryWrapper(QueryWrapper queryWrapper) {
|
public void setFieldName(String fieldName) {
|
||||||
this.queryWrapper = queryWrapper;
|
this.fieldName = fieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FieldType getFieldType() {
|
||||||
|
return fieldType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldType(FieldType fieldType) {
|
||||||
|
this.fieldType = fieldType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPrevent() {
|
||||||
|
return prevent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrevent(boolean prevent) {
|
||||||
|
this.prevent = prevent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QueryBuilder getQueryBuilder() {
|
||||||
|
return queryBuilder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQueryBuilder(QueryBuilder queryBuilder) {
|
||||||
|
this.queryBuilder = queryBuilder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder<T> {
|
||||||
|
|
||||||
|
private final FieldQuery fieldQuery;
|
||||||
|
|
||||||
|
public Builder(String className, String fieldName) {
|
||||||
|
this.fieldQuery = new FieldQuery();
|
||||||
|
this.fieldQuery.setClassName(className);
|
||||||
|
this.fieldQuery.setFieldName(fieldName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置属性类型(可选,默认自动识别)。
|
||||||
|
*
|
||||||
|
* @param fieldType 属性类型
|
||||||
|
* @return 构建者
|
||||||
|
*/
|
||||||
|
public Builder<T> fieldType(FieldType fieldType) {
|
||||||
|
this.fieldQuery.setFieldType(fieldType);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 阻止对嵌套类属性的查询,只对 {@link FieldType#COLLECTION} 与
|
||||||
|
* {@link FieldType#ENTITY} 两种属性类型有效。
|
||||||
|
*
|
||||||
|
* @return 构建者
|
||||||
|
*/
|
||||||
|
public Builder<T> prevent() {
|
||||||
|
this.fieldQuery.setPrevent(true);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置是否阻止对嵌套类属性的查询,只对 {@link FieldType#COLLECTION} 与
|
||||||
|
* {@link FieldType#ENTITY} 两种属性类型有效。
|
||||||
|
*
|
||||||
|
* @param prevent 是否阻止对嵌套类属性查询
|
||||||
|
* @return 构建者
|
||||||
|
*/
|
||||||
|
public Builder<T> prevent(boolean prevent) {
|
||||||
|
this.fieldQuery.setPrevent(prevent);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置查询这个属性的 {@code QueryWrapper} 对象。
|
||||||
|
*
|
||||||
|
* @param queryBuilder 查询包装器
|
||||||
|
* @return 构建者
|
||||||
|
*/
|
||||||
|
public Builder<T> queryWrapper(QueryBuilder<T> queryBuilder) {
|
||||||
|
this.fieldQuery.setQueryBuilder(queryBuilder);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected FieldQuery build() {
|
||||||
|
return this.fieldQuery;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user