對前台傳回的list進行分割,並放在sql語句的in中


前端數據集傳回數據

var matDeptHisMonthPlanStore = Ext.data.StoreManager.lookup('matDeptHisMonthPlanStore');
        matDeptHisMonthPlanStore.proxy.extraParams = {'PROCESS_STATUS_LIST_STRING' : '0,1,2,3'
        };

        matDeptHisMonthPlanStore.currentPage = 1;
        matDeptHisMonthPlanStore.load();

控制層處理數據

String PROCESS_STATUS_LIST_STRING,
List<Integer> PROCESS_STATUS_LIST = new ArrayList<Integer>();
            if (StringUtils.isNotEmpty(PROCESS_STATUS_LIST_STRING)) {
                String[] split = PROCESS_STATUS_LIST_STRING.split(",");
                for (int i = 0; i < split.length; i++) {
                    PROCESS_STATUS_LIST.add(Integer.valueOf(split[i]));
                }
            }

在實現層里寫方法,使用SQL語句

if (PROCESS_STATUS_LIST != null && PROCESS_STATUS_LIST.size() > 0) {
            sql += " and PROCESS_STATUS_ in (:PROCESS_STATUS_LIST)";
            paramMap.put("PROCESS_STATUS_LIST", PROCESS_STATUS_LIST);
        }

        List<Object> result = new ArrayList<Object>();
        result.add(sql);
        result.add(paramMap);




        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dmJdbcTemplate);
        return namedParameterJdbcTemplate.queryForList(sql, paramMap);

總結:控制層與實現層。控制層是作為前端數據與后端數據的交換,只是起轉換傳遞作用。對具體的業務實現應放在實現層做處理。達到數據與業務的分離,各個方法作為獨立的模塊工作,互不干擾。對不是數據庫的數據,只是做顯示處理,以及保密性,可以放在控制層做處理

SQL語句中 = 比 in 的效率更高


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM