117 lines
3.6 KiB
XML
117 lines
3.6 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.cbsd.universaltestsoftware_client.mapper.InstructMapper">
|
||
|
||
|
||
|
||
|
||
|
||
<!-- 查找前一个兄弟 -->
|
||
<select id="findPrevSibling" resultType="com.cbsd.universaltestsoftware_client.entity.Instruct">
|
||
SELECT *
|
||
FROM instruct
|
||
WHERE sort < #{sort}
|
||
AND invocation_id = #{invocationId}
|
||
AND parent_encoding= #{parentEncoding}
|
||
ORDER BY sort DESC
|
||
LIMIT 1
|
||
</select>
|
||
|
||
<!-- 查找后一个兄弟 -->
|
||
<select id="findNextSibling" resultType="com.cbsd.universaltestsoftware_client.entity.Instruct">
|
||
SELECT *
|
||
FROM instruct
|
||
WHERE sort > #{sort}
|
||
AND invocation_id = #{invocationId}
|
||
AND parent_encoding= #{parentEncoding}
|
||
ORDER BY sort ASC
|
||
LIMIT 1
|
||
</select>
|
||
|
||
|
||
<!-- 更新指令(至少更新 sort) -->
|
||
<update id="updateSort">
|
||
UPDATE instruct
|
||
SET sort = #{sort}
|
||
WHERE instruct_id = #{instructId}
|
||
</update>
|
||
|
||
|
||
<!-- 全局重排 -->
|
||
<update id="reorderGlobalSortContinuous">
|
||
UPDATE instruct t
|
||
JOIN (
|
||
SELECT instruct_id,
|
||
(@rn := @rn + 1) AS rn
|
||
FROM (SELECT * FROM instruct WHERE invocation_id = #{invocationId} ORDER BY sort) tmp,
|
||
(SELECT @rn := 0) init
|
||
) r ON t.instruct_id = r.instruct_id
|
||
SET t.sort = r.rn
|
||
WHERE t.invocation_id = #{invocationId}
|
||
</update>
|
||
|
||
|
||
<!-- 根据 ids + invocationId 查询 -->
|
||
<select id="selectByIdsAndInvocation" resultType="com.cbsd.universaltestsoftware_client.entity.Instruct">
|
||
SELECT * FROM instruct
|
||
WHERE instruct_id IN
|
||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||
#{id}
|
||
</foreach>
|
||
AND invocation_id = #{invocationId}
|
||
</select>
|
||
|
||
<!-- 置零 sort -->
|
||
<update id="setSortZeroByIds">
|
||
UPDATE instruct
|
||
SET sort = 0
|
||
WHERE instruct_id IN
|
||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||
#{id}
|
||
</foreach>
|
||
</update>
|
||
|
||
<!-- 整棵子树(多个前缀) -->
|
||
<select id="listByInvocationAndEncodingPrefix" resultType="com.cbsd.universaltestsoftware_client.entity.Instruct">
|
||
SELECT * FROM instruct
|
||
WHERE invocation_id = #{invocationId}
|
||
<foreach collection="encodings" item="enc" open="AND (" close=")" separator="OR">
|
||
encoding LIKE CONCAT(#{enc},'%')
|
||
</foreach>
|
||
ORDER BY encoding
|
||
</select>
|
||
<select id="listByParentEncodingAndInvocation"
|
||
resultType="com.cbsd.universaltestsoftware_client.entity.Instruct">
|
||
SELECT * FROM instruct
|
||
WHERE invocation_id = #{invocationId}
|
||
AND parent_encoding = #{parentCode}
|
||
ORDER BY sort
|
||
</select>
|
||
|
||
|
||
<update id="shiftSortAfter">
|
||
UPDATE instruct
|
||
SET sort = sort + 1
|
||
WHERE invocation_id = #{invocationId}
|
||
AND sort >= #{sort} and instruct_id !=#{instructId}
|
||
</update>
|
||
<update id="minusSort">
|
||
UPDATE instruct
|
||
SET sort = sort - 1
|
||
WHERE invocation_id = #{invocationId}
|
||
AND sort >= #{oldSort}
|
||
AND sort <= #{newSort}
|
||
AND instruct_id != #{instructId}
|
||
</update>
|
||
<update id="plusSort">
|
||
UPDATE instruct
|
||
SET sort = sort + 1
|
||
WHERE invocation_id = #{invocationId}
|
||
AND sort >= #{newSort}
|
||
AND sort <= #{oldSort}
|
||
AND instruct_id != #{instructId}
|
||
</update>
|
||
|
||
|
||
</mapper>
|