这篇文章讲的是在spring boot 中使用 spring data jpa 重写接口类 并实现自定义分页查询这里不仅包含了查询条件还包含了多个字段排序,希望给你在开发中带来帮助,这里主要是在原来的分页查询方法上做了封装,可能只满足了部分需求,在后续会说到原生sql怎么做封装。
源码地址 https://github.com/xutang123/wanshun
基本的数据结构
自定义注解Sqlfield定义
@Retention(RetentionPolicy.RUNTIME)
public @interface Sqlfield {
String name() default "";
}
常量类ConnectionFactory
public class ConnectionFactory {
/**
* 字符串对象类型
* */
public static final String STRING_TYPE_CLASS = "class com.wanshun.cloud.wanshun.base.op.StringType";
/**
* 整型对象类型
* */
public static final String NUMER_TYPE_CLASS = "class com.wanshun.cloud.wanshun.base.op.StringType";
/**
* 获取对象值”git“头
* */
public static final String GET_NAME = "get";
/**
* 正序
* */
public static final String DESC_TYPE = "DESC";
/**
* 倒序
* */
public static final String ASC_TYPE = "ASC";
}
枚举类Symbol
public enum Symbol {
eq,
greater,
Less,
like
}
等于对象类EqClass
public class EqClass {
public Predicate symbolPunlic(Expression expression, Object object, CriteriaBuilder cb){
return cb.equal(expression, object.toString());
}
}
其他符号的对象类基本类似。
自定义数据类型 NumerType
public class NumerType {
private Symbol op;
private Integer value;