llm-survey/backend/target/classes/mybatis/mapper/SurveyResponseMapper.xml

93 lines
3.7 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="ltd.qubit.survey.dao.SurveyResponseDao">
<!-- 结果映射 -->
<resultMap id="responseMap" type="ltd.qubit.survey.model.SurveyResponse">
<id property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="questionId" column="question_id"/>
<result property="selectedOptions" column="selected_options" typeHandler="ltd.qubit.survey.common.mybatis.JsonTypeHandler"/>
<result property="textAnswer" column="text_answer"/>
<result property="createdAt" column="created_at"/>
</resultMap>
<!-- 基础列 -->
<sql id="baseColumns">
`id`, `user_id`, `question_id`, `selected_options`, `text_answer`, `created_at`
</sql>
<!-- 插入 -->
<insert id="insert" parameterType="ltd.qubit.survey.model.SurveyResponse" useGeneratedKeys="true" keyProperty="id">
INSERT INTO `survey_response` (`user_id`, `question_id`, `selected_options`, `text_answer`)
VALUES (#{userId}, #{questionId}, #{selectedOptions,typeHandler=ltd.qubit.survey.common.mybatis.JsonTypeHandler}, #{textAnswer})
</insert>
<!-- 批量插入 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO `survey_response` (`user_id`, `question_id`, `selected_options`, `text_answer`)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.userId}, #{item.questionId},
#{item.selectedOptions,typeHandler=ltd.qubit.survey.common.mybatis.JsonTypeHandler},
#{item.textAnswer})
</foreach>
</insert>
<!-- 更新 -->
<update id="update" parameterType="ltd.qubit.survey.model.SurveyResponse">
UPDATE `survey_response`
SET `user_id` = #{userId},
`question_id` = #{questionId},
`selected_options` = #{selectedOptions,typeHandler=ltd.qubit.survey.common.mybatis.JsonTypeHandler},
`text_answer` = #{textAnswer}
WHERE `id` = #{id}
</update>
<!-- 删除 -->
<delete id="deleteById" parameterType="long">
DELETE FROM `survey_response` WHERE `id` = #{id}
</delete>
<!-- 根据用户ID删除 -->
<delete id="deleteByUserId" parameterType="long">
DELETE FROM `survey_response` WHERE `user_id` = #{userId}
</delete>
<!-- 根据ID查询 -->
<select id="findById" parameterType="long" resultMap="responseMap">
SELECT <include refid="baseColumns"/>
FROM `survey_response`
WHERE `id` = #{id}
</select>
<!-- 查询所有 -->
<select id="findAll" resultMap="responseMap">
SELECT <include refid="baseColumns"/>
FROM `survey_response`
ORDER BY `user_id`, `question_id`
</select>
<!-- 根据用户ID查询 -->
<select id="findByUserId" parameterType="long" resultMap="responseMap">
SELECT <include refid="baseColumns"/>
FROM `survey_response`
WHERE `user_id` = #{userId}
ORDER BY `question_id`
</select>
<!-- 根据问题ID查询 -->
<select id="findByQuestionId" parameterType="long" resultMap="responseMap">
SELECT <include refid="baseColumns"/>
FROM `survey_response`
WHERE `question_id` = #{questionId}
ORDER BY `user_id`
</select>
<!-- 根据用户ID和问题ID查询 -->
<select id="findByUserIdAndQuestionId" resultMap="responseMap">
SELECT <include refid="baseColumns"/>
FROM `survey_response`
WHERE `user_id` = #{userId}
AND `question_id` = #{questionId}
</select>
</mapper>