mybatis-plus 动态指定只查询某些字段

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

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值