public interface UserMapper {
@Select("SELECT "
+ " CASE WHEN Count(email)>0 THEN 1 "
+ " ELSE 0 END Result "
+ " FROM TUser "
+" WHERE email=#{email}")
boolean checkUserExists(@Param("email") String email);
}
<select id="isBenefitPatternAReviewGroup" resultType="boolean">
SELECT Distinct
CASE
WHEN VAL > 0 THEN 'true'
ELSE 'false'
END
FROM (
SELECT count(*) AS VAL
FROM table_user
WHERE email=#{email}
;
</select>
7条答案
按热度按时间esyap4oy1#
是的,您可以使用EXISTS
请注意,“SELECT 1”的存在是有原因的,您不需要选择任何实际的列
fcy6dtqo2#
我终于找到了解决办法:
kxeu7u2r3#
当我重新辨认正确或错误时,请选择0或1,以便使用COALESCE。求你恢复你的勇力,当你的勇力无效,你的勇力也无效,你的勇力也无效。保证你的咨询回复一定要登记。
为了让mybatis识别true或false,select应该返回0或1,为此我们使用COALESCE。查询返回值1,当它返回null时,合并返回0。确保查询只返回一条记录。
xoefb8l84#
这里是:
2eafrhcq5#
您可以在Mapper中返回一个用户列表,并检查列表的大小是否大于0。
kknvjkwl6#
@Select(“SELECT EXISTS(SELECT 1 FROM my_table WHERE email=#{email})”)boolean checkUserExists(@Param(“email”)String email);
不需要使用FUNC“EXSITS(...)"。
通常我喜欢这样
xzabzqsa7#
与Zach的回答类似,对于DB2,您必须使用CASE。代码是旧的,使用的是mapper.xml文件,而不是注解。