Mybatis:如何检查一行是否存在并且 return 是一个布尔值?
Mybatis: how to check if a row exists and return a boolean?
数据库是MySQL。代码应如下所示:
public interface UserMapper {
@Select("....")
boolean checkUserExists(@Param("email") String email);
}
是否可以,SELECT如何写SQL? (可以用Exists吗?)
这里是:
SELECT *
FROM information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'db_name'
AND TABLE_NAME = 'table_name'
AND COLUMN_NAME = 'column_name'
你可以returnMapper中的用户列表,检查List的大小是否大于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);
}
是的,您可以使用 EXISTS
@Select("SELECT EXISTS(SELECT 1 FROM my_table WHERE email=#{email})")
boolean checkUserExists(@Param("email") String email);
请注意 "SELECT 1" 是有原因的,您不需要 select 任何实际的列
为了让 mybatis 识别 true 或 false,这个 select 必须返回 0 或 1,为此我们使用 COALESCE。
查询返回值 1,当它返回 null 时,合并返回 0。
确保您的查询只返回一条记录。
为了mybatis识别真假,这个select应该return0或1,为此我们使用COALESCE。
查询 return 的值为 1,当它 return 为空时,合并 return 为 0。
确保您的查询 return 只有一条记录。
public interface UserMapper {
@Select("SELECT COALESCE ((SELECT 1 FROM TUser WHERE email=#{email}), 0) ")
boolean checkUserExists(@Param("email") String email);
}
@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)
数据库是MySQL。代码应如下所示:
public interface UserMapper {
@Select("....")
boolean checkUserExists(@Param("email") String email);
}
是否可以,SELECT如何写SQL? (可以用Exists吗?)
这里是:
SELECT *
FROM information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'db_name'
AND TABLE_NAME = 'table_name'
AND COLUMN_NAME = 'column_name'
你可以returnMapper中的用户列表,检查List的大小是否大于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);
}
是的,您可以使用 EXISTS
@Select("SELECT EXISTS(SELECT 1 FROM my_table WHERE email=#{email})")
boolean checkUserExists(@Param("email") String email);
请注意 "SELECT 1" 是有原因的,您不需要 select 任何实际的列
为了让 mybatis 识别 true 或 false,这个 select 必须返回 0 或 1,为此我们使用 COALESCE。 查询返回值 1,当它返回 null 时,合并返回 0。 确保您的查询只返回一条记录。
为了mybatis识别真假,这个select应该return0或1,为此我们使用COALESCE。 查询 return 的值为 1,当它 return 为空时,合并 return 为 0。 确保您的查询 return 只有一条记录。
public interface UserMapper {
@Select("SELECT COALESCE ((SELECT 1 FROM TUser WHERE email=#{email}), 0) ")
boolean checkUserExists(@Param("email") String email);
}
@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)