Commit 47d93402 by 袁伟铭

1.0.0

parent 28516662
......@@ -169,13 +169,12 @@ public class UserService {
if (StrUtil.isNotBlank(vo.getAccount())) {
lambdaQuery.like(AppUser::getAccount, vo.getAccount());
vo.setAccount(null);
}
if (StrUtil.isNotBlank(vo.getPhone())) {
lambdaQuery.like(AppUser::getPhone, vo.getPhone());
vo.setPhone(null);
}
return PagingUtils.paging(vo, userDao, lambdaQuery);
return PagingUtils.paging(vo, userDao, lambdaQuery, AppUser.class);
}
}
package com.zq.common.utils;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.ISqlSegment;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
import com.baomidou.mybatisplus.core.conditions.segments.NormalSegmentList;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
......@@ -11,6 +15,7 @@ import com.zq.common.exception.BusinessException;
import com.zq.common.vo.PageReqVo;
import com.zq.common.vo.PageVo;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
......@@ -47,15 +52,15 @@ public abstract class PagingUtils {
* @return
*/
public static <R, Q extends PageReqVo> PageVo<R> paging(Q reqVo, BaseMapper<R> mapper, Class<R> clazz) {
R instance;
R entity;
try {
instance = clazz.newInstance();
entity = clazz.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new BusinessException("分页类型转换错误");
}
BeanUtil.copyProperties(reqVo, instance);
BeanUtil.copyProperties(reqVo, entity);
IPage<R> page = new Page<>(reqVo.getPage(), reqVo.getSize());
page = mapper.selectPage(page, Wrappers.lambdaQuery(instance));
page = mapper.selectPage(page, Wrappers.lambdaQuery(entity));
return PageVo.ofReqVo(reqVo, page.getRecords(), Long.valueOf(page.getTotal()).intValue());
}
......@@ -69,9 +74,18 @@ public abstract class PagingUtils {
* @return
*/
@SuppressWarnings("all")
public static <R, Q extends PageReqVo> PageVo<R> paging(Q reqVo, BaseMapper<R> mapper, LambdaQueryWrapper<R> lambdaQuery) {
R entity = lambdaQuery.getEntity();
BeanUtil.copyProperties(reqVo, entity);
public static <R, Q extends PageReqVo> PageVo<R> paging(Q reqVo, BaseMapper<R> mapper, LambdaQueryWrapper<R> lambdaQuery, Class<R> clazz) {
R entity;
try {
entity = clazz.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new BusinessException("分页类型转换错误");
}
// 已设置在lambdaQuery的字段实体类中不应该重复设置
String[] whereFields = getWhereFields(lambdaQuery);
BeanUtil.copyProperties(reqVo, entity, whereFields);
lambdaQuery.setEntity(entity);
IPage<R> page = new Page<>(reqVo.getPage(), reqVo.getSize());
......@@ -79,4 +93,27 @@ public abstract class PagingUtils {
return PageVo.ofReqVo(reqVo, page.getRecords(), Long.valueOf(page.getTotal()).intValue());
}
/**
* 获取设置的条件字段名
*
* @param lambdaQuery
* @param <R>
* @return
*/
public static <R> String[] getWhereFields(LambdaQueryWrapper<R> lambdaQuery) {
List<String> fields = new ArrayList<>();
MergeSegments expression = lambdaQuery.getExpression();
NormalSegmentList normal = expression.getNormal();
int index = 0;
for (ISqlSegment iSqlSegment : normal) {
if (index % 4 == 0) {
fields.add(StrUtil.toCamelCase(iSqlSegment.getSqlSegment()));
}
index++;
}
return fields.toArray(new String[]{});
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment