This repository has been archived on 2025-05-14. You can view files and clone it, but cannot push or open issues or pull requests.
copy-kamanote/src/main/resources/mapper/QuestionListItemMapper.xml
LingandRX 8150192b1b feat(model): 新增实体类和相关功能
- 新增 Category、Collection、Comment 等实体类
- 实现笔记查询、分类、收藏、评论等功能
- 添加 Markdown 解析工具类
- 新增用户点赞和收藏功能
- 实现问题查询和统计功能
2025-03-27 21:20:23 +08:00

81 lines
3.2 KiB
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.example.copykamanotes.mapper.QuestionListItemMapper">
<insert id="insert">
INSERT INTO question_list_item (question_list_id, question_id, `rank`)
VALUES (#{questionListId}, #{questionId}, #{rank})
</insert>
<resultMap id="QuestionListItemVOResultMap" type="com.example.copykamanotes.model.vo.questionListItem.QuestionListItemVO">
<id property="questionListId" column="question_list_id"/>
<id property="rank" column="rank"/>
<association property="question"
javaType="com.example.copykamanotes.model.vo.question.BaseQuestionVO">
<id property="questionId" column="question.question_id"/>
<result property="title" column="question.title"/>
<result property="viewCount" column="question.view_count"/>
<result property="examPoint" column="question.exam_point"/>
<result property="difficulty" column="question.difficulty"/>
<result property="categoryId" column="question.category_id"/>
</association>
</resultMap>
<sql id="findByIdSelectClause">
SELECT qli.question_list_id,
qli.rank,
q.question_id AS "question.question_id",
q.title AS "question.title",
q.view_count AS "question.view_count",
q.exam_point AS "question.exam_point",
q.difficulty AS "question.difficulty",
q.category_id AS "question.category_id"
FROM question_list_item qli
LEFT JOIN question q
ON qli.question_id = q.question_id
WHERE qli.question_list_id = #{questionListId}
ORDER BY qli.rank
</sql>
<select id="findByQuestionListId" resultMap="QuestionListItemVOResultMap">
<include refid="findByIdSelectClause"/>
</select>
<select id="countByQuestionListId" resultType="int">
SELECT COUNT(*)
FROM question_list_item
WHERE question_list_id = #{questionListId}
</select>
<select id="findByQuestionListIdPage" resultMap="QuestionListItemVOResultMap">
<include refid="findByIdSelectClause" />
LIMIT #{limit} OFFSET #{offset}
</select>
<delete id="deleteByQuestionListIdAndQuestionId">
DELETE
FROM question_list_item
WHERE question_list_id = #{questionListId}
AND question_id = #{questionId}
</delete>
<delete id="deleteByQuestionListId">
DELETE
FROM question_list_item
WHERE question_list_id = #{questionListId}
</delete>
<select id="nextRank" resultType="int">
SELECT COALESCE(MAX(`rank`), 0) + 1
FROM `question_list_item`
WHERE `question_list_id` = ${questionListId};
</select>
<update id="updateQuestionRank" parameterType="com.example.copykamanotes.model.entity.QuestionListItem">
UPDATE `question_list_item`
SET `rank` = #{rank}
WHERE `question_list_id` = #{questionListId}
AND `question_id` = #{questionId}
</update>
</mapper>