酒店预订系统--【批量创建房间 绑定楼层】 Mybatis的foreach批量添加

该博客介绍了如何通过Mybatis的foreach标签实现批量添加酒店房间的功能。管理员可以批量创建多个房间,每个房间关联楼层,并从前端接收到的参数中解析房间号,生成UUID作为唯一标识,再调用service方法进行保存。代码示例展示了如何处理和存储数据,以及对应的XML映射文件中的插入语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

酒店预订系统–【批量创建房间 绑定楼层】 Mybatis的foreach批量添加

功能分析 :
酒店管理员完成对自己酒店的房型,房间 , 的添加。涉及到房间数很多,所以采用批量添加的方法,进行多个房间的批量添加。

整体结构
酒店 == > 楼栋 == > 楼层pId=? == > 房间 == > 设备

分析表结构:

在这里插入图片描述

分析前端页面传递的参数
在这里插入图片描述
接下来就是接收前端参数
创建对象 获取有用数据, 存到集合中进行批量添加

主体思路:

  1. 用相应的对象进行接收
  2. 获取房间号(字符串数组)遍历房间号,得到每一个对象添加到集合中
  3. 在for循环外面new 一个集合
  4. 把遍历创建的对象放入集合中
  5. 调用方法进行添加
    (各路大神的想法)

在这里插入图片描述

附上我的代码

/**
     * 商户端,批量添加房间
     * 多个房间
     *
     * @param room
     * @return
     */
//    @RequestMapping(value = "patchSaveRoom")
    @PostMapping("patchSaveRoom")
    private Result patchSaveRoom(@RequestBody HotelRoomVo hotelRoomVo) {
        Result result = ResultFactory.getSuccessResult("批量保存成功");
        try {
        	List<HotelRoom> roomList = Lists.newArrayList();
        	 String[] roomCodes = hotelRoomVo.getCode().split(",");
        	 for (String codes : roomCodes) {
        		 HotelRoom room = new HotelRoom();
        		 System.out.println(codes);
        		 room.setCode(codes);
        		 room.setId(String.valueOf(UUID.randomUUID()));
        		 room.setName(codes);
        		 room.setGroupId(hotelRoomVo.getGroupId());
        		 room.setHouseId(hotelRoomVo.getHouseId());
        		 room.setHotelId(hotelRoomVo.getHotelId());
        		 String floorId = room.getGroupId();
        		 HHotelGroup buildFloor  =   hHotelGroupService.selectByPrimaryKey(Long.valueOf(floorId));
        		 // 获取当前的楼层数  buildFloor (楼栋== 楼层)
        		 List<HHotelGroup> floor = buildFloor.getChildrenList();
        		 for (HHotelGroup floors : floor) {
					String floornum = floors.getFloornum();
					room.setFloorCount(Integer.valueOf(floornum));
				}
        		 roomList.add(room);
			}
        	// 用对象进行接收 
        	// 获取到对象里面的code 这是一个字符串数组
        	// 遍历字符串数组
        	hotelRoomService.patchSaveRoom(roomList);
        } catch (Exception e) {
            e.printStackTrace();
            result = ResultFactory.getErrorResult("批量保存失败");
        }
        return result;
    }

对应XX.xml

 <!-- // 批量添加房间
	void patchSaveRoom(List<HotelRoom> hotelRooms); -->
	 <insert id="patchSaveRoom" parameterType="java.util.List">
        insert into h_hotel_room (
            id,
			hotel_id,
			house_id,
			group_id,
			name,
			code,
			state,
			floor_count)
        values
        <foreach collection="list" item="item" index="index" separator=",">
            (
            #{item.id,jdbcType=VARCHAR}, 
            #{item.hotelId,jdbcType=VARCHAR},
            #{item.houseId,jdbcType=VARCHAR},
            #{item.groupId,jdbcType=VARCHAR},
            #{item.code,jdbcType=VARCHAR},
            #{item.name,jdbcType=VARCHAR},
            #{item.state,jdbcType=VARCHAR},
            #{item.floorCount,jdbcType=VARCHAR}
            )
           
        </foreach>
``` @Override public CommonResult<List<AddressBookVO>> getAddressBook(GetAddressBookDTO dto) { SysUserRole sysUserRole = sysUserRoleService.getOne(Wrappers.<SysUserRole>lambdaQuery() .eq(SysUserRole::getUserId,dto.getUserId())); if (ObjectUtil.isEmpty(sysUserRole)){ return CommonResult.failed("账号信息异常,请联系技术人员"); } SysCompany sysCompany = sysCompanyMapper.selectById(sysUserRole.getCompanyId()); SysRole sysRole = sysRoleMapper.selectById(sysUserRole.getRoleId()); List<AddressBookVO> dataList = new ArrayList<>(); if (sysRole.getId()==1) { //获取所有洗涤厂信息 List<SysCompany> sysCompanyList = sysCompanyMapper.selectList(Wrappers.<SysCompany>lambdaQuery() .like(ObjectUtil.isNotEmpty(dto.getValueName()), SysCompany::getCompanyName, dto.getValueName()) .eq(SysCompany::getIsDelete, 0)); for (SysCompany entity : sysCompanyList) { AddressBookVO vo = new AddressBookVO(); vo.setCount(sysCompanyList.size()); vo.setCompanyId(entity.getId()); vo.setPhone(entity.getContactPhone()); vo.setNameValue(entity.getCompanyName()); dataList.add(vo); } } // }else { // if (sysCompany.getCompanyType()==2){ // List<SysCompany> hotelList = sysCompanyMapper.selectList(Wrappers.<SysCompany>lambdaQuery() // .eq(SysCompany::getCompanyType,3).eq(SysCompany::getIsDelete,0) // .like(ObjectUtil.isNotEmpty(dto.getValueName()),SysCompany::getCompanyName,dto.getValueName()) // .eq(SysCompany::getBingCompanyId,sysCompany.getId())); // for (SysCompany entity : hotelList){ // AddressBookVO vo = new AddressBookVO(); // vo.setCount(hotelList.size()); // vo.setCompanyId(entity.getId()); // vo.setPhone(entity.getContactPhone()); // vo.setNameValue(entity.getCompanyName()); // dataList.add(vo); // } // } else { List<SysUserCompany> sysUserCompanyList = sysUserCompanyService.list(Wrappers.<SysUserCompany>lambdaQuery() .eq(SysUserCompany::getCompanyId,sysCompany.getId()) .eq(SysUserCompany::getIsDelete,0)); List<Long> userIds = new ArrayList<>(); sysUserCompanyList.forEach(x->{ userIds.add(x.getUserId()); }); List<SysUser> sysUserList = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery() .in(SysUser::getId,userIds) .like(ObjectUtil.isNotEmpty(dto.getValueName()),SysUser::getUserName,dto.getValueName()) .eq(SysUser::getIsDelete,0)); sysUserList.forEach(x->{ AddressBookVO vo = new AddressBookVO(); vo.setCount(sysUserList.size()); vo.setUserId(x.getId()); vo.setPhone(x.getPhone()); vo.setNameValue(x.getUserName()); dataList.add(vo); }); } dataList.forEach(x->{ String shortName = StrUtil.subPre(PinyinHelper.toPinyin(x.getNameValue(), PinyinStyleEnum.NUM_LAST),1).toUpperCase(); x.setShortName(shortName); }); return CommonResult.success(dataList); }```请帮我分析一下这段代码,并把代码修改为查询该id所属酒店以及查询余额
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值