美文网首页
MVC特别参数传递

MVC特别参数传递

作者: 曦夫 | 来源:发表于2018-11-30 17:53 被阅读0次

1.MyBatis传递List<Bean>类型参数

  • DAO层
public interface DemoDao {
    int insertDemo(@Param("beans") List<Bean> beans);
}

  • XML文件
<mapper namespace="com.example.demo.dao.DemoDao ">
    <insert id="insertDemo" parameterType="com.example.demo.entity.Bean">
        INSERT INTO table(field1,field2,field3) VALUES
        <foreach collection="beans" item="bean" separator="," >
            ( #{bean.field1}, #{bean.field2}, #{bean.field3} )
        </foreach>
    </insert>
</mapper>

1.默认实体类型Bean(所对应数据库字段[field1,field2,field3])
2.表:table;字段:field1,field2,field3
3.循环执行:insert into table( field1, field2, field3) values ( , , ), ( , , ) .... ( , , );



2.MyBatis传递Map(K,V)类型参数

  • DAO层
public interface DemoDao {
   Integer insertDemo( @Param("map") Map<String,Object> map);
}

  • XML文件
<mapper namespace="com.example.demo.dao.DemoDao">
    <insert id="insertDemo" parameterType="java.util.Map">
        INSERT INTO table(field1,field2) VALUES
        <foreach collection="map" item="value" separator="," index="key">
            ( #{key}, #{value} )
        </foreach>
    </insert>
</mapper>

1.默认存储为Map<key,value>键值对类型
2.与数据库字段对应关系:key:field1; value:field2
3.foreach中,item对应value值,index对应key值

详解: foreach属性-动态-mybatis中使用map类型参数



3.SpringMVC使用List<Entity>接受前台传递Json数组

3.1.数据格式

  • 前台传递的Json数据单条的格式
[
    {
        "id":"BV10834915",
        "name":"189工业区(公交站)",
        "adcode":"440307",
        "citycode":"0755",
        "location":{"N":22.657431,"O":114.208664,"lng":114.208664,"lat":22.657431},
        "buslines":[
                {
                    "id":"440300014698",
                    "location":{"N":22.657457,"O":114.208556,"lng":114.208557,"lat":22.657457},
                    "name":"907路(228工业区总站--园山风景区)",
                    "start_stop":"228工业区总站",
                    "end_stop":"园山风景区"
                },
                {
                    "id":"440300015501",
                    "location":{"N":22.657457,"O":114.208556,"lng":114.208557,"lat":22.657457},
                    "name":"M309路(228工业区总站--樟坑径总站)",
                    "start_stop":"228工业区总站",
                    "end_stop":"樟坑径总站"
                }
             ]
    }
]


  • Controller接收时对应的实体类数据格式
    ①.最外层Station对应实体类
public class Station {
    //公交站点id,该id是唯一标识
    private String id;
    //公交站点名称
    private String name;    
    //区域编码
    private String adcode;  
    //城市编码
    private String citycode;    
    //公交站点经纬度
    private Location location;
    //途经此站点的公交路线列表
    private List<BusLines> buslines;
}

②.Station中BusLines对应实体类

public class BusLines {
    //公交线路id,该id是唯一标识
    private String id;
    //公交线路名称
    private String name;
    //公交线路途经此站的经纬度
    private Location location;
    //首发站
    private String start_stop;
    //终点站
    private String end_stop;
    //存储StationID
    private String stationID;
}

③.Station和BusLines中Location对应实体类

public class Location {
    private String N; 
    private String O;
    private String lat;
    private String lng;
    private String busLineID;
}

3.2.代码实现

1.由于整个Json数组数据比较多,封装成实体类来接收
2.Json数组使用List<Entity>类型接受
3.List中可以嵌套List,嵌套其他实体类型。只要和数据相对应即可


  • 前台Ajax传递Json数组
 /**
    *对结果集进行后台传递
    */
    function responseInfos(data){
        $.ajax({
            type: "POST",
            dataType: "JSON",
            contentType: "application/json",
            url: "/url",
            data: JSON.stringify(data),
            async: true,
            success: function (result) {
               if(result == 0){
                   console.log("success!");  
               }
            }
        });
    }

1.post请求接受json数据格式使用注解:@RequestBody
2.以json数据格式响应使用注解:@ResponseBody

  • Controller接受数据
/**
     * 获取所有站点信息,并装配入库
     *
     * @param sins
     * @return
     */
    @PostMapping("/url")
    @ResponseBody
    public String getStationInfo(@RequestBody List<Station> stations) {
        //逻辑处理
        return "0";
    }

相关文章

网友评论

      本文标题:MVC特别参数传递

      本文链接:https://www.haomeiwen.com/subject/ubvhcqtx.html