前提
在頁面對checkedbox爲true的用戶,進行批量刪除
頁面通過<input>標籤的name屬性和id屬性傳遞用戶名和用戶id
content+=' <td><input type="checkbox" name="'+n.loginacct+'" id="'+n.id+'"></td>';
封裝多個相同屬性名的json數據
1.先定義一個變量jsonObj
2.通過下面語句得到被勾選的checkbox的集合,即被刪除的用戶集合
var selectCheckbox = $("tbody tr td input:checked");
3.通過遍歷,得到,每個用戶的id和loginacct屬性值,這裏可以把jsonObj看作是一個數組集合
注意:datas的名稱必須與服務器端相關的Controller方法參數類型的字段一致
var jsonObj = {};
$.each(selectCheckbox,function(i,n){
jsonObj["datas["+i+"].id"] = n.id;
jsonObj["datas["+i+"].loginacct"] = n.name;
});
封裝後的json參數,datas代表Controller接受的參數類型所具有的屬性,[X]代表是否封裝到同一個對象,.id代表datas屬性裏必須帶有id屬性
datas[0].id = XX
datas[0].loginacct = XX
datas[1].id = XX
datas[1].loginacct = XX
4.相對應的Controller方法,其中Data參數類型必須有datas屬性
@ResponseBody
@RequestMapping("/doDeleteBatch")
public Object doDeleteBatch(Data data) {
AjaxResult result = new AjaxResult();
try {
int count = userService.deleteBatchUserByVo(data);
result.setSuccess(count==data.getDatas().size());
} catch (Exception e) {
e.printStackTrace();
result.setSuccess(false);
result.setMessage("刪除數據失敗");
}
return result;
}
5.Data類裏面必須有datas屬性
public class Data {
private List<User> userList = new ArrayList<User>();
private List<User> datas = new ArrayList<User>();
private List<Integer> ids;
private List<MemberCert> certimgs = new ArrayList<MemberCert>();
6.略過Controller成和Service層
Dao層的mapper方法,傳入的是Data類型
int deleteBatchUserByVo(Data data);
7.對應的的mybatis方法,collection可以寫Data的datas集合屬性,框架能夠通過屬性名進行查找遍歷datas集合,得到每個user對象
<delete id="deleteBatchUserByVo">
delete from t_user where id in
<foreach collection="datas" open="(" close=")" separator="," item="user">
#{user.id}
</foreach>
</delete>
---------------------------------------------------------------------------------------------
當業務層傳入的不是data對象,而是data對象裏面的集合
@Override
public int deleteBatchUserByVo(Data data) {
return userMapper.deleteBatchUserByVo(data.getDatas());
}
Dao方法參數類型也變成List集合
int deleteBatchUserByVo(List<User> userList);
這時候mybatis的配置語句的collection就不能寫成userList了,必須寫成固定參數list(官方文檔寫明)
<!-- 如果mapper接口參數類型爲Collection集合,那麼,可以使用list來獲取這個集合參數 -->
<!-- 如果mapper接口參數類型爲Array集數組,那麼,可以使用array來獲取這個數組參數 -->
<delete id="deleteBatchUserByVo">
delete from t_user where id in
<foreach collection="list" open="(" close=")" separator="," item="user">
#{user.id}
</foreach>
</delete>