| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="space.anyi.mapper.RoomMapper">
- <resultMap id="BaseResultMap" type="space.anyi.entity.Room">
- <id property="id" column="id"/>
- <result property="buildingId" column="building_id"/>
- <result property="roomNumber" column="room_number"/>
- <result property="floor" column="floor"/>
- <result property="capacity" column="capacity"/>
- <result property="gender" column="gender"/>
- <result property="createdAt" column="created_at"/>
- <result property="updatedAt" column="updated_at"/>
- <result property="buildingName" column="building_name"/>
- </resultMap>
- <sql id="BaseColumns">
- r.id, r.building_id, r.room_number, r.floor, r.capacity,
- r.gender, r.created_at, r.updated_at
- </sql>
- <select id="selectAll" resultMap="BaseResultMap">
- SELECT <include refid="BaseColumns"/>, b.name AS building_name
- FROM room r LEFT JOIN dormitory_building b ON r.building_id = b.id
- ORDER BY r.id
- </select>
- <select id="selectByCondition" resultMap="BaseResultMap">
- SELECT <include refid="BaseColumns"/>, b.name AS building_name
- FROM room r LEFT JOIN dormitory_building b ON r.building_id = b.id
- <where>
- <if test="buildingId != null">
- AND r.building_id = #{buildingId}
- </if>
- <if test="floor != null">
- AND r.floor = #{floor}
- </if>
- </where>
- ORDER BY r.id
- </select>
- <select id="selectByBuildingId" resultMap="BaseResultMap">
- SELECT <include refid="BaseColumns"/>, b.name AS building_name
- FROM room r LEFT JOIN dormitory_building b ON r.building_id = b.id
- WHERE r.building_id = #{buildingId} ORDER BY r.room_number
- </select>
- <select id="selectAvailableByBuildingId" resultMap="BaseResultMap">
- SELECT <include refid="BaseColumns"/>, b.name AS building_name,
- (SELECT COUNT(*) FROM bed WHERE room_id = r.id AND status = 0) AS available_beds
- FROM room r LEFT JOIN dormitory_building b ON r.building_id = b.id
- WHERE r.building_id = #{buildingId}
- AND (SELECT COUNT(*) FROM bed WHERE room_id = r.id AND status = 0) > 0
- ORDER BY r.room_number
- </select>
- <select id="selectById" resultMap="BaseResultMap">
- SELECT <include refid="BaseColumns"/>, b.name AS building_name
- FROM room r LEFT JOIN dormitory_building b ON r.building_id = b.id
- WHERE r.id = #{id}
- </select>
- <insert id="insert" useGeneratedKeys="true" keyProperty="id">
- INSERT INTO room (building_id, room_number, floor, capacity, gender)
- VALUES (#{buildingId}, #{roomNumber}, #{floor}, #{capacity}, #{gender})
- </insert>
- <update id="update">
- UPDATE room SET building_id = #{buildingId}, room_number = #{roomNumber},
- floor = #{floor}, capacity = #{capacity}, gender = #{gender}
- WHERE id = #{id}
- </update>
- <delete id="deleteById">
- DELETE FROM room WHERE id = #{id}
- </delete>
- <select id="countBedsByRoomId" resultType="int">
- SELECT COUNT(*) FROM bed WHERE room_id = #{roomId}
- </select>
- </mapper>
|