springmvc+mybatis+ajax 批量插入數據

批量插入。AJAX發起請求,核心代碼以下:java

var mids = new Array();
for (var i=0; i< rows.length; i++) {
    mids.push(rows[i].id);
}
$.ajax({
    type: 'POST',
    dataType: "json",
    async: false,
    traditional:true, //這一行很重要
    url: parent.getBasePath()+"sys/role/setAuth.do",
    data: {'mids': mids},
    success: function(data) {},
    error: function(err) {}
});

接下來是Controller的代碼:ajax

//直接在方法裏傳入List會報錯,因此要經過一個類封裝一層
@RequestMapping("/setAuth")
@ResponseBody
public Map<String,Object> setAuth(Short id, ModParam midsA) {

}

//封裝List對象的類
public class ModParam implements Serializable{

	private static final long serialVersionUID = 8607859409880232081L;
	private List<Short> mids;

	public List<Short> getMids() {
		return mids;
	}

	public void setMids(List<Short> mids) {
		this.mids = mids;
	}

}

Contoller一層一層的往下調用,最後到了Mapper:json

/***
 * 批量插入
 * @return
 * @throws Exception
 */
int insertWithList(List<RoleResource> rr) throws Exception;

對應的xml(我這裏的id不是一個自增的Sequence,我是去表中選取最大的id,而後依次加1,寫入到對象,因此沒有用到mybatis的selectKey,這裏是針對Oracle):mybatis

  <insert id="insertWithList" parameterType="java.util.List">
  	insert into T_WEB_ROLE_RESOURCE(id, role_id, source_id, remark) 
  	<foreach collection="list" item="item" index="index" separator="union all">
  	select #{item.id},#{item.roleId},#{item.sourceId},#{item.remark} from dual
  	</foreach>
  </insert>

嗯,這就差很少了。
app

附上一個參考連接:
async

http://chenzhou123520.iteye.com/blog/1583407this

相關文章
相關標籤/搜索