Mybatis-plus3.0以上版本条件构造器

瞎写的3.0的QueryWrapper,2.0的把QueryWrapper改成EntityWrapper完事,没多大用处,就是好玩
public class CreateQueryWrapper {

    //    public QueryWrapper getPayQueryWrapper(PageRequest pageRequest) {
    public QueryWrapper getPayQueryWrapper(T record) {

        QueryWrapper queryWrapper = new QueryWrapper<>();

//        T record = pageRequest.getData();

        Field[] declaredFields = record.getClass().getDeclaredFields();

        for (Field declaredField : declaredFields) {
            try {
                //属性描述器  record.getClass()
                PropertyDescriptor propDesc = new PropertyDescriptor(declaredField.getName(), record.getClass());
                //获取这个值  先获取读方法的方法对象,并调用获取里面的值
                Object value = propDesc.getReadMethod().invoke(record);

                //Object value = propDesc.getValue(declaredField.getName());


                //如果值不为空
                if (value != null) {
                    //如果为主键
                     if (declaredField.isAnnotationPresent(TableId.class)) {
                         queryWrapper.eq(declaredField.getName(),value);
                      }else {
                         queryWrapper.like(declaredField.getName(), "%" + value + "%"); 
                     }
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return queryWrapper;
    }
}

 

你可能感兴趣的:(自己实现的小玩意儿)