Commit 47d93402 by 袁伟铭

1.0.0

parent 28516662
...@@ -169,13 +169,12 @@ public class UserService { ...@@ -169,13 +169,12 @@ public class UserService {
if (StrUtil.isNotBlank(vo.getAccount())) { if (StrUtil.isNotBlank(vo.getAccount())) {
lambdaQuery.like(AppUser::getAccount, vo.getAccount()); lambdaQuery.like(AppUser::getAccount, vo.getAccount());
vo.setAccount(null);
} }
if (StrUtil.isNotBlank(vo.getPhone())) { if (StrUtil.isNotBlank(vo.getPhone())) {
lambdaQuery.like(AppUser::getPhone, 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; package com.zq.common.utils;
import cn.hutool.core.bean.BeanUtil; 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.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.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
...@@ -11,6 +15,7 @@ import com.zq.common.exception.BusinessException; ...@@ -11,6 +15,7 @@ import com.zq.common.exception.BusinessException;
import com.zq.common.vo.PageReqVo; import com.zq.common.vo.PageReqVo;
import com.zq.common.vo.PageVo; import com.zq.common.vo.PageVo;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.function.Function; import java.util.function.Function;
...@@ -47,15 +52,15 @@ public abstract class PagingUtils { ...@@ -47,15 +52,15 @@ public abstract class PagingUtils {
* @return * @return
*/ */
public static <R, Q extends PageReqVo> PageVo<R> paging(Q reqVo, BaseMapper<R> mapper, Class<R> clazz) { public static <R, Q extends PageReqVo> PageVo<R> paging(Q reqVo, BaseMapper<R> mapper, Class<R> clazz) {
R instance; R entity;
try { try {
instance = clazz.newInstance(); entity = clazz.newInstance();
} catch (InstantiationException | IllegalAccessException e) { } catch (InstantiationException | IllegalAccessException e) {
throw new BusinessException("分页类型转换错误"); throw new BusinessException("分页类型转换错误");
} }
BeanUtil.copyProperties(reqVo, instance); BeanUtil.copyProperties(reqVo, entity);
IPage<R> page = new Page<>(reqVo.getPage(), reqVo.getSize()); 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()); return PageVo.ofReqVo(reqVo, page.getRecords(), Long.valueOf(page.getTotal()).intValue());
} }
...@@ -69,9 +74,18 @@ public abstract class PagingUtils { ...@@ -69,9 +74,18 @@ public abstract class PagingUtils {
* @return * @return
*/ */
@SuppressWarnings("all") @SuppressWarnings("all")
public static <R, Q extends PageReqVo> PageVo<R> paging(Q reqVo, BaseMapper<R> mapper, LambdaQueryWrapper<R> lambdaQuery) { public static <R, Q extends PageReqVo> PageVo<R> paging(Q reqVo, BaseMapper<R> mapper, LambdaQueryWrapper<R> lambdaQuery, Class<R> clazz) {
R entity = lambdaQuery.getEntity(); R entity;
BeanUtil.copyProperties(reqVo, 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); lambdaQuery.setEntity(entity);
IPage<R> page = new Page<>(reqVo.getPage(), reqVo.getSize()); IPage<R> page = new Page<>(reqVo.getPage(), reqVo.getSize());
...@@ -79,4 +93,27 @@ public abstract class PagingUtils { ...@@ -79,4 +93,27 @@ public abstract class PagingUtils {
return PageVo.ofReqVo(reqVo, page.getRecords(), Long.valueOf(page.getTotal()).intValue()); 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