批量插入。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