32 lines
1.3 KiB
XML
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>
|