form表單數據量很大時的查詢和保存

    目標:本週做了一個300多項的form表單查詢和保存。

    思考:之前做查詢和保存,用的是提交後同步跳轉;這次想使用不同的方式來做;採用了ajax異步查詢和保存試試。

    過程:

  1. 選擇jQuery中的ajax函數和spring mvc框架,數據交互採用json形式

  2. 先寫後臺,類用了註解

    @Controller
    @RequestMapping("/baController")

    方法用了註解

    @RequestMapping(value="/queryba.do", produces = {"application/json;charset=UTF-8"})
    @ResponseBody
    json框架用了ali的fastjson,補充一點:默認的json中的key是小寫字母,所以我設置了變量在代碼裏;返回json中有漢字,用到了produces裏的設置;ResponseBody設置,可以直接在方法最後返回json,不用在指定dispatcher

    //設置json串中key首字母是大寫
    static
    {
        TypeUtils.compatibleWithJavaBean = true;
    }   

後臺寫jdbc查詢時,用了以下代碼:

RowMapper<BaBean> rm = ParameterizedBeanPropertyRowMapper.newInstance(BaBean.class);

        try{
            BaBean ba =  (BaBean)jdbcTemplate.queryForObject(sql, rm);
            //轉爲json
            String strjson = JSON.toJSONString(ba);
            return strjson;  
     
            
        }catch(EmptyResultDataAccessException e){
            return "{\"result\":\"false\"}";
        }

通過很短方式,就把300多項數據組裝完畢,效率還是蠻高的。spring的jdbcTemplate.queryForObject方法再拼接大數據量時,效率高。


3.驗證後臺沒問題後,再寫前臺:

前臺頁面中工作量最大的就是標籤裏的300多項,咬牙寫完;在查詢和保存中,都用到了一些小技巧,查詢後渲染頁面中的值,採用json數據循環:

//查詢
        $(document).ready(function(){
              $("#bq").click(function(){
                var caseid= $("#querybah").val();  
                
                 $.ajax({url:"/jmyy/baController/queryba.do?caseid="+caseid,
                         async:false,
                        dataType:"json",
                        cache: false,
                        success:function(data){
                            if(data["result"]=="false"){
                                alert("沒查詢出結果");
                            }else{            

                                for(var item in data){  
                                    var jValue=data[item];//key所對應的value
                                    $("#"+item).attr("value",jValue);
                                    }

                            }    
                        }
                         });

                 
                  }
              );
        });

                               

修改後保存,採用了form表單的序列化,避免了手動去遍:

    //保存
        $(document).ready(function(){
        $("#bb").click(function(){    
            
            $.ajax({
                type:"POST",
                url:"/jmyy/baController/saveba.do",
                data:$("#baform").serializeArray(),
                dataType:"json",
                cache: false,
                success:function(data){
                    alert("保存成功!");
                    //數據清空
                    window.location.reload();
                }
                });
            }
            
        );
        });


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章