如何在controller中接收前台大量参数以及接收查询返回的大量参数?

1.postman参数

//前台以form-data格式传递大量数据
name:desk //string
type:1 //int
isOk:true //boolean
doublee:5.87 //double
.........

2.代码

//controller
package com.base.controllerData;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/test")
public class TestController extends BaseController {
    
    @Autowired
    private TestService testService;
    
    @RequestMapping(value = "/query", method = RequestMethod.GET)
    @ResponseBody
    public void query() {
        
        PageData pd = this.getPageData();
        
        String name = pd.getString("name");
        int type = pd.getInt("type");
        boolean isOk = pd.getBoolean("isOk");
        double doublee = pd.getDouble("doublee");
        
        List<PageData> list = testService.query(pd);
    }
}


package com.base.controllerData;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

/**
 * 对象功能:BaseController基类
 * 
 */
public class BaseController{

    /**
     * new PageData对象
     * 
     * @return
     */
    public PageData getPageData() {
        return new PageData(this.getRequest());
    }

    /**
     * 得到request对象
     * 
     * @return
     */
    public HttpServletRequest getRequest() {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
                .getRequest();
        return request;
    }

    /**
     * 得到response对象
     * 
     * @return
     */
    public HttpServletResponse getResponse() {
        HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
                .getResponse();

        return response;
    }
}

package com.base.controllerData;

import java.io.BufferedReader;
import java.io.Reader;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import com.alibaba.druid.proxy.jdbc.ClobProxyImpl;

/**
 * 对象功能:参数封装Map:用于封装参数和Mysql数据对象
 */
@SuppressWarnings("rawtypes")
public class PageData extends HashMap implements Map {

    private static final long serialVersionUID = 1L;

    Map map = null;
    HttpServletRequest request;

    @SuppressWarnings("unchecked")
    public PageData(HttpServletRequest request) {
        this.request = request;
        Map properties = request.getParameterMap();
        Map returnMap = new HashMap();
        Iterator entries = properties.entrySet().iterator();
        Entry entry;
        String name = "";
        String value = "";
        while (entries.hasNext()) {
            entry = (Entry) entries.next();
            name = (String) entry.getKey();
            Object valueObj = entry.getValue();
            if (null == valueObj) {
                value = "";
            } else if (valueObj instanceof String[]) {
                String[] values = (String[]) valueObj;
                for (int i = 0; i < values.length; i++) {
                    value = values[i] + ",";
                }
                value = value.substring(0, value.length() - 1);
            } else {
                value = valueObj.toString();
            }
            returnMap.put(name, value);
        }
        map = returnMap;
    }

    public PageData() {
        map = new HashMap();
    }

    public PageData(Object key,Object value) {
        map = new HashMap();
        put(key, value);
    }

    @Override
    public Object get(Object key) {
        Object obj = null;
        if (map.get(key) instanceof Object[]) {
            Object[] arr = (Object[]) map.get(key);
            obj = request == null ? arr : (request.getParameter((String) key) == null ?     arr : arr[0]);
        } else {
            obj = map.get(key);
        }
        return obj;
    }

    public String getString(Object key) {
        Object val = get(key);
        if (val != null && !"".equals(val)) {
            return val.toString();
        } else {
            return "";
        }
    }

    public Double getDouble(Object key) {
        Object val = get(key);
        if (val != null && !"".equals(val)) {
            return Double.valueOf(val.toString());
        } else {
            return 0d;
        }
    }

    public Integer getInt(Object key) {
        Object val = get(key);
        if (val != null && !"".equals(val)) {
            return Integer.valueOf(val.toString());
        } else {
            return null;
        }
    }

    public Boolean getBoolean(Object key) {
        Object val = get(key);
        if (val != null && !"".equals(val)) {
            return Boolean.parseBoolean(val.toString());
        } else {
            return false;
        }
    }

    @SuppressWarnings("unchecked")
    @Override
    public Object put(Object key, Object value) {
        if (value instanceof ClobProxyImpl) { // 读取oracle Clob类型数据
            try {
                ClobProxyImpl cpi = (ClobProxyImpl) value;
                Reader is = cpi.getCharacterStream(); // 获取流
                BufferedReader br = new BufferedReader(is);
                String str = br.readLine();
                StringBuffer sb = new StringBuffer();
                while (str != null) { // 循环读取数据拼接到字符串
                    sb.append(str);
                    sb.append("\n");
                    str = br.readLine();
                }
                value = sb.toString();
            } catch (Exception e) {
            }
        }
        return map.put(key, value);
    }

    @Override
    public Object remove(Object key) {
        return map.remove(key);
    }

    @Override
    public void clear() {
        map.clear();
    }

    @Override
    public boolean containsKey(Object key) {
        return map.containsKey(key);
    }

    @Override
    public boolean containsValue(Object value) {
        return map.containsValue(value);
    }

    @Override
    public Set entrySet() {
        return map.entrySet();
    }

    @Override
    public boolean isEmpty() {
        return map.isEmpty();
    }

    @Override
    public Set keySet() {
        return map.keySet();
    }

    @SuppressWarnings("unchecked")
    @Override
    public void putAll(Map t) {
        map.putAll(t);
    }

    @Override
    public int size() {
        return map.size();
    }

    @Override
    public Collection values() {
        return map.values();
    }

}


//service
package com.base.controllerData;

import java.util.List;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

public class TestService {

    @Autowired
    private BaseDao dao;

    public List<PageData> query(PageData pd) {
        return (List<PageData>) dao.findForList("TestMapper.query", pd);
    }
}
 

3.配置文件

//mapper文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="TestMapper">
​
    <!-- 属性字段 -->
    <sql id="request">
        name,
        type,
        isOk,
        doublee
    </sql>
    
    <select id="query" parameterType="pd" resultType="pd">
        SELECT
        <include refid="request" />
        FROM test
        WHERE name = #{name}
    </select>
</mapper>
        
        
//mybatis配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"  
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    
    <settings> 
        <!-- <setting name="logImpl" value="LOG4J"/> -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <setting name="cacheEnabled" value="true" /><!-- 全局映射器启用缓存 -->   
        <setting name="useGeneratedKeys" value="true" /> 
        <setting name="defaultExecutorType" value="REUSE" /> 
        <!--解决,查询返回结果含null没有对应字段值问题-->  
        <setting name="callSettersOnNulls" value="true"/> 
    </settings>
​
    <typeAliases>
        <!-- 这里添加生成的实体类 -->
        <typeAlias type="com.yunji.vmanager.entity.PageData" alias="pd"/>
    </typeAliases>
    
</configuration>

 

代码地址:https://github.com/1542196732/controllerData

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值