Files
wb-java-nc-shop/target/classes/mapper/UserSimilarityMapper.xml
2026-01-11 18:14:42 +08:00

32 lines
1.3 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.nlshop.mapper.UserSimilarityMapper">
<resultMap id="BaseResultMap" type="com.nlshop.entity.UserSimilarity">
<result column="user1_id" property="user1Id"/>
<result column="user2_id" property="user2Id"/>
<result column="similarity_score" property="similarityScore"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<insert id="insertOrUpdate" parameterType="com.nlshop.entity.UserSimilarity">
INSERT INTO user_similarity (user1_id, user2_id, similarity_score)
VALUES (#{user1Id}, #{user2Id}, #{similarityScore})
ON DUPLICATE KEY UPDATE
similarity_score = #{similarityScore}, update_time = NOW()
</insert>
<select id="selectByUserIds" resultMap="BaseResultMap">
SELECT * FROM user_similarity
WHERE (user1_id = #{user1Id} AND user2_id = #{user2Id})
OR (user1_id = #{user2Id} AND user2_id = #{user1Id})
LIMIT 1
</select>
<select id="selectSimilarUsers" resultMap="BaseResultMap">
SELECT * FROM user_similarity
WHERE user1_id = #{userId} OR user2_id = #{userId}
ORDER BY similarity_score DESC
LIMIT #{limit}
</select>
</mapper>