RoomMapper.xml 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="space.anyi.mapper.RoomMapper">
  4. <resultMap id="BaseResultMap" type="space.anyi.entity.Room">
  5. <id property="id" column="id"/>
  6. <result property="buildingId" column="building_id"/>
  7. <result property="roomNumber" column="room_number"/>
  8. <result property="floor" column="floor"/>
  9. <result property="capacity" column="capacity"/>
  10. <result property="gender" column="gender"/>
  11. <result property="createdAt" column="created_at"/>
  12. <result property="updatedAt" column="updated_at"/>
  13. <result property="buildingName" column="building_name"/>
  14. </resultMap>
  15. <sql id="BaseColumns">
  16. r.id, r.building_id, r.room_number, r.floor, r.capacity,
  17. r.gender, r.created_at, r.updated_at
  18. </sql>
  19. <select id="selectAll" resultMap="BaseResultMap">
  20. SELECT <include refid="BaseColumns"/>, b.name AS building_name
  21. FROM room r LEFT JOIN dormitory_building b ON r.building_id = b.id
  22. ORDER BY r.id
  23. </select>
  24. <select id="selectByCondition" resultMap="BaseResultMap">
  25. SELECT <include refid="BaseColumns"/>, b.name AS building_name
  26. FROM room r LEFT JOIN dormitory_building b ON r.building_id = b.id
  27. <where>
  28. <if test="buildingId != null">
  29. AND r.building_id = #{buildingId}
  30. </if>
  31. <if test="floor != null">
  32. AND r.floor = #{floor}
  33. </if>
  34. </where>
  35. ORDER BY r.id
  36. </select>
  37. <select id="selectByBuildingId" resultMap="BaseResultMap">
  38. SELECT <include refid="BaseColumns"/>, b.name AS building_name
  39. FROM room r LEFT JOIN dormitory_building b ON r.building_id = b.id
  40. WHERE r.building_id = #{buildingId} ORDER BY r.room_number
  41. </select>
  42. <select id="selectAvailableByBuildingId" resultMap="BaseResultMap">
  43. SELECT <include refid="BaseColumns"/>, b.name AS building_name,
  44. (SELECT COUNT(*) FROM bed WHERE room_id = r.id AND status = 0) AS available_beds
  45. FROM room r LEFT JOIN dormitory_building b ON r.building_id = b.id
  46. WHERE r.building_id = #{buildingId}
  47. AND (SELECT COUNT(*) FROM bed WHERE room_id = r.id AND status = 0) > 0
  48. ORDER BY r.room_number
  49. </select>
  50. <select id="selectById" resultMap="BaseResultMap">
  51. SELECT <include refid="BaseColumns"/>, b.name AS building_name
  52. FROM room r LEFT JOIN dormitory_building b ON r.building_id = b.id
  53. WHERE r.id = #{id}
  54. </select>
  55. <insert id="insert" useGeneratedKeys="true" keyProperty="id">
  56. INSERT INTO room (building_id, room_number, floor, capacity, gender)
  57. VALUES (#{buildingId}, #{roomNumber}, #{floor}, #{capacity}, #{gender})
  58. </insert>
  59. <update id="update">
  60. UPDATE room SET building_id = #{buildingId}, room_number = #{roomNumber},
  61. floor = #{floor}, capacity = #{capacity}, gender = #{gender}
  62. WHERE id = #{id}
  63. </update>
  64. <delete id="deleteById">
  65. DELETE FROM room WHERE id = #{id}
  66. </delete>
  67. <select id="countBedsByRoomId" resultType="int">
  68. SELECT COUNT(*) FROM bed WHERE room_id = #{roomId}
  69. </select>
  70. </mapper>