數據庫是MySQL。代碼應該如下所示:Mybatis:如何檢查一行是否存在並返回布爾值?
public interface UserMapper {
@Select("....")
boolean checkUserExists(@Param("email") String email);
}
是否有可能,以及如何編寫SELECT SQL? (?可以存在使用)
數據庫是MySQL。代碼應該如下所示:Mybatis:如何檢查一行是否存在並返回布爾值?
public interface UserMapper {
@Select("....")
boolean checkUserExists(@Param("email") String email);
}
是否有可能,以及如何編寫SELECT SQL? (?可以存在使用)
是的,你可以使用EXISTS
@Select("SELECT EXISTS(SELECT 1 FROM my_table WHERE email=#{email})")
boolean checkUserExists(@Param("email") String email);
請注意,「選擇1」是有原因的,你不需要選擇任何實際的列
這裏是:
SELECT *
FROM information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'db_name'
AND TABLE_NAME = 'table_name'
AND COLUMN_NAME = 'column_name'
您可以映射返回用戶的列表並檢查列表的大小大於0
我終於找到了解決方案:
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);
}