public class MyQueryWrapper<T> extends QueryWrapper<T> {
    @Override
    protected String columnToString(String column) {
        // 驼峰命名转换为下划线命名
        return StringUtils.camelToUnderline(column);
    }
}

/ 往后时候的wrapper都希望是MyQueryWrapper /

MyQueryWrapper<WarehouseInfo> w = new MyQueryWrapper<>()
w.and(wrapper -> {
    wrapper.in(WarehouseInfo.Fields.provinceCode, dto.getAreaCodeSet());
    wrapper.or();
    wrapper.in(WarehouseInfo.Fields.cityCode, dto.getAreaCodeSet());
    wrapper.or();
    wrapper.in(WarehouseInfo.Fields.countyCode, dto.getAreaCodeSet());
});

/ 期望能够使用MyQueryWrapper的columnToString方法 /

Comment From: miemieYaho

重写#instance

Comment From: coderLrf

重写#instance

public class MyQueryWrapper<T> extends QueryWrapper<T> {

    @Override
    protected String columnToString(String column) {
        // 驼峰命名转换为下划线命名
        return StringUtils.camelToUnderline(column);
    }

    @Override
    protected QueryWrapper<T> instance() {
        return new MyQueryWrapper<>();
    }

}

这样直接new吗,会有些and参数没匹配