直接上代码
用法
package com.example.pidog.util;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.lang.reflect.Field;
import java.util.List;
public class QueryWrapperBuffer<T> {
public QueryWrapper<T> getByNotNullField(T t, Class<?> clazz) throws IllegalAccessException {
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if(field.get(t)!=null){
queryWrapper.eq(field.getName(),field.get(t));
}
}
return queryWrapper;
}
}
//使用: orderService.list(query.getByNotNullField(order,Order.class))
//如果使用了mybatis-plus的自动驼峰转换 请加上这样一个函数,
//替换上边的queryWrapper.eq(field.getName(),field.get(t));为
//queryWrapper.eq(fieldToColumn(field.getName()),field.get(t));
// private String fieldToColumn(String field){
// StringBuffer sb = new StringBuffer("");
// for(int i=0;i<field.length();i++){
// //判断首字母是否为大写字母
// if('A'<=field.charAt(i)&&field.charAt(i)<='Z'){
// sb.append("_"+field.charAt(i));
// }else {
// sb.append(field.charAt(i)+"");
// }
// }
// return sb.toString();
// }