Spring MVC 参数绑定 List类型(对象集合) 批量新增操作

【准备工作】


      1.批量删除的SQL(语法):
 

-- 同时插入三条数据
insert into 表名(列名1,列名2,列名3,列名4)
values
(值1,值2,值3,值4),(值1,值2,值3,值4),(值1,值2,值3,值4);

      2.批量删除的SQL(具体SQL):

-- 新增3条车辆信息
insert into 
`bus`(busNumber,busByLineId,busSinessId)
values
('湘AJI212',1,2),('湘AJI213',2,3),('湘AJI214',2,3);

 

一、实体类

        1、Bus实体类

package com.entity;

public class Bus {
	private int busId;
	private String busNumber;
	private int busByLineId;
	private int busSinessId;

	public int getBusId() {
		return busId;
	}

	public void setBusId(int busId) {
		this.busId = busId;
	}

	public String getBusNumber() {
		return busNumber;
	}

	public void setBusNumber(String busNumber) {
		this.busNumber = busNumber;
	}

	public int getBusByLineId() {
		return busByLineId;
	}

	public void setBusByLineId(int busByLineId) {
		this.busByLineId = busByLineId;
	}

	public int getBusSinessId() {
		return busSinessId;
	}

	public void setBusSinessId(int busSinessId) {
		this.busSinessId = busSinessId;
	}

	@Override
	public String toString() {
		return "Bus [busId=" + busId + ", busNumber=" + busNumber
				+ ", busByLineId=" + busByLineId + ", busSinessId="
				+ busSinessId + "]";
	}

	public Bus() {
	}

	public Bus(int busId, String busNumber, int busByLineId, int busSinessId) {
		super();
		this.busId = busId;
		this.busNumber = busNumber;
		this.busByLineId = busByLineId;
		this.busSinessId = busSinessId;
	}

}

        2、BusList实体类

package com.entity;

import java.util.List;

public class BusList {
	private List<Bus> buslist;

	public List<Bus> getBuslist() {
		return buslist;
	}

	public void setBuslist(List<Bus> buslist) {
		this.buslist = buslist;
	}

	@Override
	public String toString() {
		return "BusList [buslist=" + buslist + "]";
	}

	public BusList() {
	}

	public BusList(List<Bus> buslist) {
		super();
		this.buslist = buslist;
	}

}

二、Mapper层

        1、接口

package com.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.entity.Bus;

public interface BusMapper {
    // 批量新增的方法
    // 参数为对象集合
	public int ManyRegister(@Param(value="list")List<Bus> list);
}

        2、xml

<?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="com.mapper.BusMapper">

      <!-- 新增的SQL标签 参数为List-->
      <!-- 多个对象放置在foreach 标签中循环迭代-->
      <!-- foreach:-->
      <!-- collection:迭代的数据类型-->
      <!-- item:迭代时的别名-->
      <!-- separator:分隔符-->

      <insert id="ManyRegister" parameterType="java.util.List">
		insert into 
         `bus`(busNumber,busByLineId,busSinessId)
         values
		  <foreach collection="list" item="item" separator=",">
		    (#{item.busNumber},#{item.busByLineId},#{item.busSinessId})
		  </foreach>
	  </insert>

      <!-- 注:item.属性需要与实体类中的属性名一致、大小写一致 !-->
     
</mapper>

三、Service层

        1、接口

package com.service;

import com.entity.BusList;

public interface BusService {
    // 注!
    // service层中的参数为BusList封装的实体类
	public int ManyRegister(BusList list);
}

        2、实现类

package com.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.entity.Bus;
import com.entity.BusList;
import com.mapper.BusMapper;

@Service 
public class BusServiceImpl implements BusService{
    
	@Resource
	private BusMapper dao;

	@Override
	public int ManyRegister(BusList list) {
		// 获取BusList 对象中的List集合
        List<Bus> bus = list.getBuslist();
        // 作为参数传递给Dao层
		return dao.ManyRegister(bus);
	}
}

四、controller层

package com.controller;

import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.entity.BusList;
import com.service.BusService;

@Controller
@RequestMapping("user")
public class TestController {
	// 依赖注入
	@Resource
	private BusService service;
	
    // 编写控制层方法,用于进入批量新增的jsp页面
    @RequestMapping("test")
    public String test(){
		return "testInsert";
    }
   
    // 编写控制层方法,用于实现批量新增
   @RequestMapping("ManyRegister")
   public String ManyRegister(BusList list){
       // 输出前端传来的list的内容
	   System.out.println("===list:"+list);
       // 调用Service层批量新增的方法
	   int count = service.ManyRegister(list);
	   System.out.println("===count:"+count);
	   return "testInsert";
   }
}

五、JSP

<form name="blogsform" method="post" action="${pageContext.request.contextPath}/user/ManyRegister">
    <table>
    <tr>
        <!--注:name下标前的值需要与BusList封装实体类中的属性名一致 -->
        <!--
          public class BusList {
	             private List<Bus> buslist;
        }
        -->
        <!--注:name下标后的值需要与Bus实体类中的属性名一致 -->
        <!--
          public class Bus{
	             private String busNumber;
	             private int busByLineId;
	             private int busSinessId;
        }
        -->
        <td><input name="buslist[0].busNumber" value="test1" /> </td>
        <td><input name="buslist[0].busByLineId" value="1"/> </td>
        <td><input name="buslist[0].busSinessId" value="1"/> </td>
    </tr>
    <tr>
        <td><input name="buslist[1].busNumber" value="test2" /> </td>
        <td><input name="buslist[1].busByLineId" value="2"/> </td>
        <td><input name="buslist[1].busSinessId" value="2"/> </td>
    </tr>
    </table>
    <button type="submit">提交</button>
</form>

六、测试

 


版权声明:本文为weixin_41583535原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。