gpt4 book ai didi

java - 从请求体获取params,但不能在mybatis注解连接查询中使用

转载 作者:太空宇宙 更新时间:2023-11-04 09:13:49 28 4
gpt4 key购买 nike

我正在使用Springboot与maven和Mybatis集成。我想使用以下代码进行连接查询。我总共需要 3 次查询**才能获得结果。想问通过查询传递参数的正确方法是什么

第一个是我的主表,我可以获取所有酒店名称,这两个参数是从用户传递的,但它们不会在此查询中使用

第一个查询中的

classes是我进行多对多查询的地方

@Select("Select * from hotels ")
@Results(value = {
@Result(column = "id", property = "id", id = true),
@Result(column = "chiName", property = "chiName"),
@Result(column = "engName", property = "engName"),
@Result(column = "{id, startDate, endDate}", property = "classes", many = @Many(select = "getAllClass")),
@Result(column = "telephone", property = "telephone")
})
List<Map<String, Hotel>> getAllHotels(@Param("startDate") String startDate, @Param("endDate") String endDate);

我的第二个查询如下,我尝试做的是传递第一个查询中的参数,但没有成功。

@Select("Select * from classes " +
"left join hotels on hotels.id = classes.hotelId " +
"WHERE classes.hotelId = #{hotels.id} "
)
@Results({
@Result(column = "id", property = "id", id = true),
@Result(column = "hotelId", property = "hotelId"),
@Result(column = "className", property = "className"),
@Result(column = "isActivate", property = "isActivate"),
@Result(column = "totalRoom", property = "totalRoom"),
@Result(column = "availableRoom", property = "availableRoom"),
@Result(column = "{id, startDate, endDate}", property = "bookingRecords", many = @Many(select = "getBookingRecords"))
})
List<Class> getAllClass();

我的第三个查询:


@Select("Select * from booking_records " +
"left join classes on classes.id = booking_records.classId " +
"WHERE booking_records.classId = #{classes.id} " +
"AND " +
"`date` BETWEEN #{startDate} AND #{endDate}"
)
@Results({
@Result(column = "id", property = "id", id = true),
@Result(column = "userId", property = "userId"),
@Result(column = "classId", property = "classId"),
@Result(column = "date", property = "date"),
@Result(column = "isActivate", property = "isActivate"),
})
List<BookingRecord> getBookingRecords();

最佳答案

最后我用mybatis xml文件来写这个。以下是我所拥有的。有需要的请引用。

<?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.hotelmanagementsys.hotelmang.dao.SearchMapper">
<resultMap id="BaseResultMap" type="Hotel">
<id property="id" column="id"/>
<result property="chiName" column="chiName"/>
<result property="engName" column="engName"/>
<result property="telephone" column="telephone"/>

<collection property="classes" column="id" ofType="Class" javaType="List">
<result property="id" column="id"/>
<result property="hotelId" column="hotelId"/>
<result property="className" column="className"/>
<result property="isActivate" column="isActivate"/>
<result property="totalRoom" column="totalRoom"/>
<result property="availableRoom" column="availableRoom"/>

<collection property="bookingRecords" column="id" ofType="BookingRecord" javaType="List">
<result property="id" column="id"/>
<result property="userId" column="userId"/>
<result property="classId" column="classId"/>
<result property="date" column="date"/>
<result property="isActivate" column="isActivate"/>
</collection>
</collection>
</resultMap>


<select id="filterHotel" resultMap="BaseResultMap">
SELECT hotels.*, classes.*, booking_records.* FROM hotels
LEFT JOIN classes ON (classes.hotelId = hotels.id)
LEFT JOIN booking_records ON (classes.id = booking_records.classId)
WHERE booking_records.date BETWEEN #{startDate} AND #{endDate}
</select>

</mapper>

关于java - 从请求体获取params,但不能在mybatis注解连接查询中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59343951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com