private void buildWhereCondition(TypeSpec.Builder builder, CommonField fc) {
        MethodSpec.Builder field = MethodSpec
            .methodBuilder(fc.getName())
            .addModifiers(Modifier.PUBLIC);
        String klassName = fc.getJavaType().toString();
        try {
            Class klass = Class.forName(klassName);
            if (klass.equals(String.class)) {
                field.returns(this.whereType(StringWhere.class));
            } else if (klass.equals(Boolean.class)) {
                field.returns(this.whereType(BooleanWhere.class));
            } else if (Number.class.isAssignableFrom(klass)) {
                field.returns(this.whereType(NumericWhere.class));
            } else {
                field.returns(this.whereType(ObjectWhere.class));
            }
        } catch (Exception e) {
            field.returns(this.whereType(ObjectWhere.class));
        }

        field.addStatement("return this.set($L)", varSegment(fc.getName()));
        builder.addMethod(field.build());
    }
public static class QueryWhere extends ...

@return TypeSpec
fluent-mybatis-processor/src/main/java/cn/org/atool/fluent/processor/mybatis/filer/segment/SegmentFiler.java