#{}会将要替换的内容加上类型格式,如:userIds为String类型的“1000,1001”,#{<userIds>}会被替换为带引号的字符串 "1000,1001",这时如果使用查询条件 IN(#{userIds})将变成IN("1000,1001")而不是 IN(1000,1001)。
${}会将要替换的内容以value直接替换,不会带任何格式,如果是SQL的字符串也能直接替换并被运行,所以在某些场景,可能被SQL注入的攻击者利用。
2022-09-02 22:36:04
#{}会将要替换的内容加上类型格式,如:userIds为String类型的“1000,1001”,#{<userIds>}会被替换为带引号的字符串 "1000,1001",这时如果使用查询条件 IN(#{userIds})将变成IN("1000,1001")而不是 IN(1000,1001)。
${}会将要替换的内容以value直接替换,不会带任何格式,如果是SQL的字符串也能直接替换并被运行,所以在某些场景,可能被SQL注入的攻击者利用。