数据库是MySQL。代码应如下所示:
public interface UserMapper {
@Select("....")
boolean checkUserExists(@Param("email") String email);
}
是否可以,以及如何编写SELECT SQL? (可以使用吗?)
答案 0 :(得分:13)
是的,您可以使用EXISTS
@Select("SELECT EXISTS(SELECT 1 FROM my_table WHERE email=#{email})")
boolean checkUserExists(@Param("email") String email);
请注意,“SELECT 1”是有原因的,您不需要选择任何实际列
答案 1 :(得分:3)
我终于找到了解决方案:
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);
}
答案 2 :(得分:0)
这是:
SELECT *
FROM information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'db_name'
AND TABLE_NAME = 'table_name'
AND COLUMN_NAME = 'column_name'
答案 3 :(得分:0)
您可以在Mapper中返回用户列表,并检查List的大小是否大于0.
答案 4 :(得分:0)
Mybatis reconhecer verdadeiro ou falsa,Este select deve retornar 0 ou 1,para isso usamos COALESCE。 顾问1的壮举和注册0的结余。 Garanta que sua consultinga retorno somente um registro。
为使mybatis识别是非,此选择应返回0或1,为此我们使用COALESCE。 查询返回值1,当返回空值时,合并返回0。 确保您的查询仅返回一条记录。
public interface UserMapper {
@Select("SELECT COALESCE ((SELECT 1 FROM TUser WHERE email=#{email}), 0) ")
boolean checkUserExists(@Param("email") String email);
}
答案 5 :(得分:0)
@Select("SELECT EXISTS(SELECT 1 FROM my_table WHERE email=#{email})") boolean checkUserExists(@Param("email") String email);
没有必要使用 FUNC "EXSITS(...)"。
通常,我喜欢那样。
@Select("select 1 from my_table where email = #{email} limit 1")
Optional<Boolean> checkUserExists(@Param("email") String email)