如何自定义自己的Pager类
为什么要自定义,因为不同开发需要,他们字段名命名不一样
1. 继承 IPager接口
java
public class Pager<T> implements IPager<T> {
}
2. 实现set方法
java
public class Pager<T> implements IPager<T> {
@Override
public <V> void set(PagerField<V> field, V value) {
if (PagerField.TOTAL == field) {
//设置总条数
this.setTotal((Integer) value);
return;
}
if (PagerField.RESULTS == field) {
//设置List结果
this.setResults((List) value);
return;
}
throw new RuntimeException("not support field: " + field);
}
}
3. 实现get方法
java
public class Pager<T> implements IPager<T> {
@Override
public <V> void set(PagerField<V> field, V value) {
if (PagerField.TOTAL == field) {
//设置总条数
this.setTotal((Integer) value);
return;
}
if (PagerField.RESULTS == field) {
//设置List结果
this.setResults((List) value);
return;
}
throw new RuntimeException("not support field: " + field);
}
@Override
public <V> V get(PagerField<V> field) {
if (PagerField.IS_EXECUTE_COUNT == field) {
//返回是否执行count查询 ,isExecuteCount改成你自己的方法或字段
return (V) this.isExecuteCount();
}
if (PagerField.NUMBER == field) {
//返回页码 ,getNumber改成你自己的方法或字段
return (V) this.getNumber();
}
if (PagerField.SIZE == field) {
//返回每页条数 ,getSize改成你自己的方法或字段
return (V) this.getSize();
}
throw new RuntimeException("not support field: " + field);
}
}
4. 接下来就可以使用自己的Pager类了
java
@Service
public class Test{
@Autowired
private SysUserMapper sysUserMapper;
public void demo() {
//new 或者 从其他地方传参
Pager<SysUser> pager = ...;
//直接调用paging方法分页,然后用 pager 直接接收
pager = QueryChain.of(sysUserMapper)
.eq(SysUser::getId,1)
.like(SysUser::getUserName,"xxx")
.paging(pager);
}
}