<?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="com.hspedu.springboot.mybatis.mapper.MonsterMapper">
<resultMap id="ReservationResultMap" type="Reservation">
<id property="reservationId" column="reservation_Id" />
<result property="startTime" column="start_time" />
<result property="endTime" column="end_time" />
<result property="topic" column="topic" />
<association property="room" column="room_id" javaType="Room" select="com.hspedu.springboot.mybatis.mapper.RoomMapper.selectByRoomId" />
<association property="user" column="user_id" javaType="User" select="com.hspedu.springboot.mybatis.mapper.UserMapper.selectByUserId" />
</resultMap>
<insert id="insertReservation" parameterType="Reservation">
INSERT INTO reservations (room_id, user_id, start_time, end_time, topic)
VALUES (#{roomId}, #{userId}, #{startTime}, #{endTime}, #{topic})
<selectKey keyProperty="reservationId" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
<delete id="deleteReservation" parameterType="int">
DELETE FROM reservations WHERE reservation_id = #{reservationId}
</delete>
<select id="selectReservation" resultMap="ReservationResultMap" parameterType="int">
SELECT *
FROM reservations
WHERE reservation_id = #{reservationId}
</select>
<select id="selectAllReservations" resultMap="ReservationResultMap">
SELECT *
FROM reservations
</select>
<update id="updateReservation" parameterType="Reservation">
UPDATE reservations
SET room_id = #{roomId},
user_id = #{userId},
start_time = #{startTime},
end_time = #{endTime},
topic = #{topic}
WHERE reservation_id = #{reservationId}
</update>
<select id="selectReservationsByTimeRange" resultType="Reservation">
SELECT reservation_id, room_id, user_id, start_time, end_time, topic
FROM reservations
WHERE start_time <= #{endTime} AND end_time >= #{startTime}
</select>
<select id="selectReservationByRoomID" resultType="Reservation" parameterType="int">
SELECT reservation_id as reservationId, room_id as roomId, user_id as userId, start_time as startTime, end_time as endTime, topic
FROM reservations
WHERE room_id = #{roomId}
</select>
</mapper>
<select id="selectByRoomId" resultType="Room" parameterType="int">
SELECT * FROM rooms WHERE room_id = #{roomId}
</select>
<select id="selectByUserId" resultType="User" parameterType="int">
SELECT * FROM users WHERE user_id = #{userId}
</select>