调整条件构造器、分页类

v1.4.1
Parker 5 years ago
parent 51f23d0eed
commit bcee4124a1

@ -19,13 +19,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.github.pagehelper.PageSerializable; import com.github.pagehelper.PageSerializable;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.opsli.api.base.warpper.ApiWrapper; import org.opsli.api.base.warpper.ApiWrapper;
import org.opsli.core.base.entity.BaseEntity; import org.opsli.core.base.entity.BaseEntity;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* *
@ -106,11 +105,11 @@ public class Page<T extends BaseEntity,E extends ApiWrapper> extends PageSeriali
* bootstrap data * bootstrap data
* @return map * @return map
*/ */
public Map<String, Object> getBootstrapData(){ public Page.PageData getPageData(){
Map<String, Object> map = new HashMap<>(2); Page.PageData pageData = new PageData();
map.put("rows", this.getList()); pageData.setRows(this.getList());
map.put("total", this.getTotal()); pageData.setTotal(this.getTotal());
return map; return pageData;
} }
@ -140,4 +139,21 @@ public class Page<T extends BaseEntity,E extends ApiWrapper> extends PageSeriali
this.queryWrapper = queryWrapper; this.queryWrapper = queryWrapper;
} }
//////////////////////////////////////////////////////////
/**
*
*/
@Data
public static class PageData {
/** 条数 */
private Long total;
/** 行 */
private List rows;
}
} }

@ -21,6 +21,7 @@ import org.apache.commons.lang3.StringUtils;
import org.opsli.common.constants.MyBatisConstants; import org.opsli.common.constants.MyBatisConstants;
import org.opsli.common.utils.HumpUtil; import org.opsli.common.utils.HumpUtil;
import org.opsli.core.base.entity.BaseEntity; import org.opsli.core.base.entity.BaseEntity;
import org.opsli.core.persistence.querybuilder.conf.WebQueryConf;
import java.util.Map; import java.util.Map;
@ -52,6 +53,8 @@ public class WebQueryBuilder<T extends BaseEntity> implements QueryBuilder<T>{
private final Class<? extends BaseEntity> entityClazz; private final Class<? extends BaseEntity> entityClazz;
/** 默认排序字段 */ /** 默认排序字段 */
private final String defaultOrderField; private final String defaultOrderField;
/** 配置类 */
private WebQueryConf conf;
/** /**
* *
@ -64,6 +67,18 @@ public class WebQueryBuilder<T extends BaseEntity> implements QueryBuilder<T>{
this.defaultOrderField = MyBatisConstants.FIELD_UPDATE_TIME; this.defaultOrderField = MyBatisConstants.FIELD_UPDATE_TIME;
} }
/**
*
* @param entityClazz Entity clazz
* @param parameterMap request
*/
public WebQueryBuilder(Class<T> entityClazz, Map<String, String[]> parameterMap, WebQueryConf conf){
this.parameterMap = parameterMap;
this.entityClazz = entityClazz;
this.defaultOrderField = MyBatisConstants.FIELD_UPDATE_TIME;
this.conf = conf;
}
/** /**
* *
* @param entityClazz Entity clazz * @param entityClazz Entity clazz
@ -77,6 +92,22 @@ public class WebQueryBuilder<T extends BaseEntity> implements QueryBuilder<T>{
this.defaultOrderField = defaultOrderField; this.defaultOrderField = defaultOrderField;
} }
/**
*
* @param entityClazz Entity clazz
* @param parameterMap request
* @param defaultOrderField
* @param conf
*/
public WebQueryBuilder(Class<T> entityClazz, Map<String, String[]> parameterMap,
String defaultOrderField, WebQueryConf conf){
this.parameterMap = parameterMap;
this.entityClazz = entityClazz;
this.defaultOrderField = defaultOrderField;
this.conf = conf;
}
@Override @Override
public QueryWrapper<T> build() { public QueryWrapper<T> build() {
QueryWrapper<T> queryWrapper = new QueryWrapper<>(); QueryWrapper<T> queryWrapper = new QueryWrapper<>();
@ -85,7 +116,7 @@ public class WebQueryBuilder<T extends BaseEntity> implements QueryBuilder<T>{
/** /**
* *
* @return * @return QueryWrapper
*/ */
private <T extends BaseEntity> QueryWrapper<T> createQueryWrapper(QueryWrapper<T> queryWrapper){ private <T extends BaseEntity> QueryWrapper<T> createQueryWrapper(QueryWrapper<T> queryWrapper){
if(this.parameterMap == null){ if(this.parameterMap == null){
@ -106,16 +137,18 @@ public class WebQueryBuilder<T extends BaseEntity> implements QueryBuilder<T>{
if(keyHandle.length < 2){ if(keyHandle.length < 2){
continue; continue;
} }
// 键
String key = keyHandle[0];
// 操作
String handle = keyHandle[1];
// 判断 字段是否合法 // 判断 字段是否合法
boolean hasField = this.validationField(keyHandle); boolean hasField = this.validationField(key);
if(hasField){ if(hasField){
// 验证操作是否合法 // 验证操作是否合法
boolean hasHandle = this.validationHandle(keyHandle); boolean hasHandle = this.validationHandle(handle);
if(hasHandle){ if(hasHandle){
// 操作
String handle = keyHandle[1];
// 键
String key = keyHandle[0];
// 处理值 // 处理值
String value = values[0]; String value = values[0];
// 赋值 // 赋值
@ -130,7 +163,21 @@ public class WebQueryBuilder<T extends BaseEntity> implements QueryBuilder<T>{
// 如果没有排序 默认按照 修改时间倒叙排序 // 如果没有排序 默认按照 修改时间倒叙排序
if(orderCount == 0){ if(orderCount == 0){
if(StringUtils.isNotEmpty(this.defaultOrderField)){ if(StringUtils.isNotEmpty(this.defaultOrderField)){
queryWrapper.orderByDesc(HumpUtil.humpToUnderline(this.defaultOrderField)); String key = this.defaultOrderField;
String keyStr = null;
if(conf != null){
keyStr = conf.get(key);
}
// 检测 Conf 配置中是否已经指定该配置
if(StringUtils.isNotEmpty(keyStr)){
key = keyStr;
}else{
// 转换驼峰 为 数据库下划线字段
key = HumpUtil.humpToUnderline(key);
}
queryWrapper.orderByDesc(key);
} }
} }
return queryWrapper; return queryWrapper;
@ -150,8 +197,19 @@ public class WebQueryBuilder<T extends BaseEntity> implements QueryBuilder<T>{
){ ){
return; return;
} }
// 转换驼峰 为 数据库下划线字段 String keyStr = null;
key = HumpUtil.humpToUnderline(key); if(conf != null){
keyStr = conf.get(key);
}
// 检测 Conf 配置中是否已经指定该配置
if(StringUtils.isNotEmpty(keyStr)){
key = keyStr;
}else{
// 转换驼峰 为 数据库下划线字段
key = HumpUtil.humpToUnderline(key);
}
switch (handle) { switch (handle) {
case EQ: case EQ:
// 全值匹配 // 全值匹配
@ -186,37 +244,50 @@ public class WebQueryBuilder<T extends BaseEntity> implements QueryBuilder<T>{
/** /**
* *
* @param keyHandle * @param key key
* @return * @return boolean
*/ */
private boolean validationField(String[] keyHandle){ private boolean validationField(String key){
if(entityClazz == null || keyHandle == null || StringUtils.isEmpty(keyHandle[0])){ if(StringUtils.isEmpty(key)){
return false; return false;
} }
boolean ret;
// 先判断 conf 文件中是否包含 改 key
if(conf != null){
ret = conf.hashKey(key);
if(ret){
return true;
}
}
// entity 对象是否为空
if(entityClazz == null){
return false;
}
// 判断当前传入参数 是否是Entity的字段 // 判断当前传入参数 是否是Entity的字段
return ReflectUtil.hasField(entityClazz, keyHandle[0]); return ReflectUtil.hasField(entityClazz, key);
} }
/** /**
* *
* @param keyHandle * @param handle
* @return * @return boolean
*/ */
private boolean validationHandle(String[] keyHandle){ private boolean validationHandle(String handle){
if(keyHandle == null || StringUtils.isEmpty(keyHandle[1])){ if(StringUtils.isEmpty(handle)){
return false; return false;
} }
String handle = keyHandle[1]; switch (handle) {
if (EQ.equals(handle)) { case EQ:
return true; case END:
} else if (LIKE.equals(handle)) { case LIKE:
return true; case BEGIN:
} else if (BEGIN.equals(handle)) { return true;
return true; default:
} else if (END.equals(handle)) { return ORDER.equals(handle);
return true;
} }
return ORDER.equals(handle);
} }
} }

@ -0,0 +1,62 @@
/**
* Copyright 2020 OPSLI https://www.opsli.com
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.opsli.core.persistence.querybuilder.conf;
import java.util.HashMap;
import java.util.Map;
/**
* Web
*
* @author Parker
* @date 20213317:12:08
*/
public class WebQueryConf {
private final Map<String, String> queryMap;
public WebQueryConf(){
queryMap = new HashMap<>();
}
/**
* Key
* @param key key
* @param value
*/
public void pub(String key, String value){
queryMap.putIfAbsent(key, value);
}
/**
* Key
* @param key key
*/
public String get(String key){
return queryMap.get(key);
}
/**
* Key
* @param key key
* @return boolean
*/
public boolean hashKey(String key){
return queryMap.containsKey(key);
}
}

@ -111,7 +111,7 @@ public class TableRestController extends BaseRestController<CreaterTable, Create
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -114,7 +114,7 @@ public class #(data.model.tableName)RestController extends BaseRestController<#(
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -17,6 +17,7 @@ package org.opsli.modulars.system.area.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.opsli.core.base.entity.HasChildren; import org.opsli.core.base.entity.HasChildren;
@ -39,6 +40,6 @@ public interface SysAreaMapper extends BaseMapper<SysArea> {
* *
* @return List * @return List
*/ */
List<HasChildren> hasChildren(@Param("ew") Wrapper<SysArea> wrapper); List<HasChildren> hasChildren(@Param(Constants.WRAPPER) Wrapper wrapper);
} }

@ -9,9 +9,7 @@
count(0) as `count` count(0) as `count`
from from
sys_area sys_area
<where> ${ew.customSqlSegment}
${ew.sqlSegment}
</where>
</select> </select>

@ -97,7 +97,7 @@ public class DictDetailRestController extends BaseRestController<SysDictDetail,
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -98,7 +98,7 @@ public class DictRestController extends BaseRestController<SysDict, DictModel, I
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -81,7 +81,7 @@ public class LogsRestController extends BaseRestController<SysLogs, LogsModel, I
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }

@ -303,7 +303,7 @@ public class MenuRestController extends BaseRestController<SysMenu, MenuModel, I
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -97,7 +97,7 @@ public class SysOptionsRestController extends BaseRestController<SysOptions, Opt
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -17,6 +17,7 @@ package org.opsli.modulars.system.org.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.opsli.core.base.entity.HasChildren; import org.opsli.core.base.entity.HasChildren;
@ -39,13 +40,13 @@ public interface SysOrgMapper extends BaseMapper<SysOrg> {
* *
* @return * @return
*/ */
List<HasChildren> hasChildren(@Param("ew") Wrapper<SysOrg> wrapper); List<HasChildren> hasChildren(@Param(Constants.WRAPPER) Wrapper wrapper);
/** /**
* *
* @return * @return
*/ */
Integer hasUse(@Param("ew") Wrapper<SysOrg> wrapper); Integer hasUse(@Param(Constants.WRAPPER) Wrapper wrapper);
} }

@ -8,9 +8,7 @@
count(0) as `count` count(0) as `count`
from from
sys_org sys_org
<where> ${ew.customSqlSegment}
${ew.sqlSegment}
</where>
</select> </select>
<select id="hasUse" parameterType="SysOrg" resultType="Integer"> <select id="hasUse" parameterType="SysOrg" resultType="Integer">
@ -18,9 +16,7 @@
count(0) count(0)
from from
sys_user_org_ref sys_user_org_ref
<where> ${ew.customSqlSegment}
${ew.sqlSegment}
</where>
</select> </select>
</mapper> </mapper>

@ -98,7 +98,7 @@ public class RoleRestController extends BaseRestController<SysRole, RoleModel, I
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -91,7 +91,7 @@ public class TenantRestController extends BaseRestController<SysTenant, TenantMo
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -17,11 +17,11 @@ package org.opsli.modulars.system.user.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.opsli.api.wrapper.system.user.UserPassword; import org.opsli.api.wrapper.system.user.UserPassword;
import org.opsli.modulars.system.menu.entity.SysMenu; import org.opsli.modulars.system.menu.entity.SysMenu;
import org.opsli.modulars.system.org.entity.SysOrg;
import org.opsli.modulars.system.user.entity.SysUser; import org.opsli.modulars.system.user.entity.SysUser;
import org.opsli.modulars.system.user.entity.SysUserAndOrg; import org.opsli.modulars.system.user.entity.SysUserAndOrg;
@ -92,5 +92,5 @@ public interface UserMapper extends BaseMapper<SysUser> {
* *
* @return * @return
*/ */
List<SysUserAndOrg> findList(@Param("ew") Wrapper<SysUserAndOrg> wrapper); List<SysUserAndOrg> findList(@Param(Constants.WRAPPER) Wrapper wrapper);
} }

@ -46,9 +46,7 @@
from from
sys_user a sys_user a
<include refid="joins"></include> <include refid="joins"></include>
<where> ${ew.customSqlSegment}
${ew.sqlSegment}
</where>
</select> </select>
<select id="queryAllPerms" resultType="String"> <select id="queryAllPerms" resultType="String">

@ -331,7 +331,7 @@ public class UserRestController extends BaseRestController<SysUser, UserModel, I
userModel.setSecretKey(null); userModel.setSecretKey(null);
userModel.setPassword(null); userModel.setPassword(null);
} }
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -86,7 +86,7 @@ public class TestCarRestController extends BaseRestController<TestCar, TestCarMo
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -87,7 +87,7 @@ public class TestUserRestController extends BaseRestController<TestUser, TestUse
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -71,7 +71,7 @@ public class TestRestController extends BaseRestController<TestEntity, TestModel
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
/** /**

@ -271,7 +271,7 @@ public class TestRestRestController extends BaseRestController<TestEntity, TestM
page.setQueryWrapper(queryBuilder.build()); page.setQueryWrapper(queryBuilder.build());
page = IService.findPage(page); page = IService.findPage(page);
return ResultVo.success(page.getBootstrapData()); return ResultVo.success(page.getPageData());
} }
@ApiOperation(value = "导出Excel", notes = "导出Excel") @ApiOperation(value = "导出Excel", notes = "导出Excel")

Loading…
Cancel
Save