前端页面提交表单时,对于下拉框选项,请求字典数据,通过字典类型请求,一个类型发送一次请求,请求10几次,导致页面慢
解决办法
合并请求,只发送一次请求,请求参数设为数组
controller.java
/**
* 根据字典类型查询字典数据信息
*/
@GetMapping(value = "/multipleTypeQuery/{dictTypes}")
public AjaxResult multipleTypeQuery(@PathVariable List<String> dictTypes)
{
List<DictDataResponse> responses = new ArrayList<>();
for (String type:dictTypes){
List<SysDictData> data = dictTypeService.selectDictDataByType(type);
DictDataResponse response = new DictDataResponse(type,data);
responses.add(response);
}
return AjaxResult.success(responses);
}
返回数据的格式存储:
方式1、List里面套一个List
方式2、new HashMap<String , List<>>
/**
* @author panbin
* @create 2022/11/22 13:35
*/
public class DictDataResponse {
private String type;
private List<SysDictData> sysDictData;
public DictDataResponse() {
}
public DictDataResponse(String type, List<SysDictData> sysDictData) {
this.type = type;
this.sysDictData = sysDictData;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public List<SysDictData> getSysDictData() {
return sysDictData;
}
public void setSysDictData(List<SysDictData> sysDictData) {
this.sysDictData = sysDictData;
}
}
service.java
/**
* 根据字典类型查询字典数据
*
* @param dictType 字典类型
* @return 字典数据集合信息
*/
public List<SysDictData> selectDictDataByType(String dictType);
serviceImpl.java
/**
* 根据所有字典类型
*
* @return 字典类型集合信息
*/
@Override
public List<SysDictType> selectDictTypeAll()
{
return dictTypeMapper.selectDictTypeAll();
}
mapper.java
/**
* 根据所有字典类型
*
* @return 字典类型集合信息
*/
public List<SysDictType> selectDictTypeAll();
mapper.xml
<sql id="selectDictTypeVo">
select dict_id, dict_name, dict_type, status, create_by, create_time, remark
from sys_dict_type
</sql>
<select id="selectDictTypeAll" resultMap="SysDictTypeResult">
<include refid="selectDictTypeVo"/>
</select>