当存在多个参数时,传进去的值就区分不开了,这时可以考虑用Map

当存在多个参数时,传进去的值就区分不开了,这时可以考虑用Map, 来取代注解@Param的方式在这里插入图片描述

当在这里,需要多表插入,插入两个参数,这是没有问题的,但是当还需要添加一个字段该怎么办呢?
当存在多个参数时,传进去的值就区分不开了,mybatis可能会报错,说什么传了多个参数,找不到参数啊哟

	public void addRoleToUser(String userId, String[] roleId) {for (String s : roleId) {userDao.addRoleToUser(userId,s);}}

下面是完整的解决方案
核心是用map

		Map<String, Object> usersRoleMap = new HashMap<String, Object>();

开始
controller

	/*** 用户添加角色* 有两个参数,一个事userId,一个是roleIds,查的是某个userId,但对应的可能有多个角色,用数组的形式* */@RequestMapping("/addRoleToUser.do")public String addRoleToUser(@RequestParam(name = "userId") String userId,@RequestParam(name = "ids") String[] roleId){userService.addRoleToUser(userId, roleId);return "redirect:findAll.do";}

service省略了,直接serviceimpl

	/*** 上述优化改造完成,当有多个值传入的时候用map封装,这里添加字段gmt_create_time* @param userId* @param roleId*/public void addRoleToUser(String userId, String[] roleId) {Map<String, Object> usersRoleMap = new HashMap<String, Object>();Date date = new Date();usersRoleMap.put("gmtCreateTime",date);usersRoleMap.put("userId", userId);if (userId !=  null){for (String s : roleId) {usersRoleMap.put("roleId", s);userDao.addRoleToUser2(usersRoleMap);}}}

最后到

	/*** 上述优化改造完成,当有多个值传入的时候用map封装,这里添加字段gmt_create_time* @param usersRoleMap*/@Insert("insert into users_role(userId, roleId, gmt_create_time) values (#{userId}, #{roleId}, #{gmtCreateTime})")void addRoleToUser2(Map<String, Object> usersRoleMap);

解决了
但这里前端也可以直接传一个对象过来,roleId依然是数组的形式就好,封装一下也是同样道理。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部