客戶端ajax的多個相同屬性名的json格式封裝

前提

在頁面對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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章