主要目的: 处理前端只想查询其中的某些字段, 返回所有数据太多,又不想扩展接口的时候使用

1、传入动态字段

// 获取逗号分割的需要的字符串
String fieldValues = param.getFieldValues();

2、拼接语句查询即可

LambdaQueryWrapper<CreditPointRuleClass> queryWrapper = new LambdaQueryWrapper<>();
		// 只查询某些字段
		if (StringUtils.isNotBlank(fieldValues)) {
			Predicate<TableFieldInfo> predicate = null;
			String[] fieldValuesArray = fieldValues.split(",");
			for (String field : fieldValuesArray) {
				predicate = predicate == null ? p -> p.getColumn().equals(field) : predicate.or(p -> p.getColumn().equals(field));
			}
			queryWrapper.select(CreditPointRuleClass.class,predicate);
		}

3、优化为工具类

3.1、工具
/**
 * mybatis 查询工具
 */
public class MybatisPlusUtil {

	/**
	 * 只返回 指定字段
	 *
	 * @author wangsong
	 * @email 1720696548@qq.com
	 * @date 2022/4/28 10:15
	 */
	public static <T> void fieldValues(String fieldValues, LambdaQueryWrapper<T> queryWrapper, Class<T> aClass) {
		if (StringUtils.isNotBlank(fieldValues)) {
			Predicate<TableFieldInfo> predicate = null;
			String[] fieldValuesArray = fieldValues.split(",");
			for (String field : fieldValuesArray) {
				predicate = predicate == null ? p -> p.getColumn().equals(field) : predicate.or(p -> p.getColumn().equals(field));
			}
			queryWrapper.select(aClass, predicate);
		}
	}
}
使用
LambdaQueryWrapper<CreditPointRuleClass> queryWrapper = new LambdaQueryWrapper<>();

MybatisPlusUtil.fieldValues(fieldValues, queryWrapper, CreditPointRuleClass.class);
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐