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";
}
网友评论