/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.core.mp.support; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springblade.core.launch.constant.TokenConstant; import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import java.util.Map; /** * 分页工具 * * @author Chill */ public class Condition { /** * 转化成mybatis plus中的Page * * @param query 查询条件 * @return IPage */ public static IPage getPage(Query query) { Page page = new Page<>(Func.toInt(query.getCurrent(), 1), Func.toInt(query.getSize(), 10)); String[] ascArr = Func.toStrArray(query.getAscs()); for (String asc : ascArr) { page.addOrder(OrderItem.asc(StringUtil.cleanIdentifier(asc))); } String[] descArr = Func.toStrArray(query.getDescs()); for (String desc : descArr) { page.addOrder(OrderItem.desc(StringUtil.cleanIdentifier(desc))); } return page; } /** * 获取mybatis plus中的QueryWrapper * * @param entity 实体 * @param 类型 * @return QueryWrapper */ public static QueryWrapper getQueryWrapper(T entity) { return new QueryWrapper<>(entity); } /** * 获取mybatis plus中的QueryWrapper * * @param query 查询条件 * @param clazz 实体类 * @param 类型 * @return QueryWrapper */ public static QueryWrapper getQueryWrapper(Map query, Class clazz) { Kv exclude = Kv.create().set(TokenConstant.HEADER, TokenConstant.HEADER) .set("current", "current").set("size", "size").set("ascs", "ascs").set("descs", "descs"); return getQueryWrapper(query, exclude, clazz); } /** * 获取mybatis plus中的QueryWrapper * * @param query 查询条件 * @param exclude 排除的查询条件 * @param clazz 实体类 * @param 类型 * @return QueryWrapper */ public static QueryWrapper getQueryWrapper(Map query, Map exclude, Class clazz) { exclude.forEach((k, v) -> query.remove(k)); QueryWrapper qw = new QueryWrapper<>(); qw.setEntity(BeanUtil.newInstance(clazz)); SqlKeyword.buildCondition(query, qw); return qw; } }