refactor: 优化 Query 注解查询

* @Query 注解删除了blurry字段,并且修改了字段名称及类型为数组;
This commit is contained in:
jasmine
2024-01-23 08:09:03 +00:00
committed by Charles7c
parent 0dc534ee8f
commit 6dc20e8909
3 changed files with 101 additions and 46 deletions

View File

@@ -76,11 +76,13 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO,
protected final Class<T> entityClass = this.currentEntityClass();
protected final Class<L> listClass = this.currentListClass();
protected final Class<D> detailClass = this.currentDetailClass();
protected final Class<Q> queryClass = this.currentQueryClass();
private final Field[] entityFields = this.entityClass.getDeclaredFields();
private final List<Field> queryFields = ReflectUtils.getNonStaticFields(queryClass);
@Override
public PageResp<L> page(Q query, PageQuery pageQuery) {
QueryWrapper<T> queryWrapper = QueryHelper.build(query);
QueryWrapper<T> queryWrapper = handleQueryWrapper(query);
IPage<T> page = baseMapper.selectPage(pageQuery.toPage(), queryWrapper);
PageResp<L> pageResp = PageResp.build(page, listClass);
pageResp.getList().forEach(this::fill);
@@ -133,7 +135,7 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO,
* @return 列表信息
*/
protected <E> List<E> list(Q query, SortQuery sortQuery, Class<E> targetClass) {
QueryWrapper<T> queryWrapper = QueryHelper.build(query);
QueryWrapper<T> queryWrapper = handleQueryWrapper(query);
// 设置排序
this.sort(queryWrapper, sortQuery);
List<T> entityList = baseMapper.selectList(queryWrapper);
@@ -246,6 +248,22 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO,
return entity;
}
/**
* 获取当前详情信息类型
*
* @return 当前详情信息类型
*/
protected QueryWrapper<T> handleQueryWrapper(Q query) {
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
// 没有查询条件,直接返回
if (null == query) {
return queryWrapper;
}
// 获取查询条件中所有的字段
queryFields.forEach(field -> QueryHelper.buildQuery(query, field, queryWrapper));
return queryWrapper;
}
/**
* 新增前置处理
*
@@ -323,4 +341,13 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO,
protected Class<D> currentDetailClass() {
return (Class<D>)this.typeArguments[3];
}
/**
* 获取当前查询类型
*
* @return 当前查询类型
*/
protected Class<Q> currentQueryClass() {
return (Class<Q>)this.typeArguments[4];
}
}