尝试理解 Kotlin 中的 SQL 查询,以便在数据库查询 return 空集时得到 null returned

Try to understand the SQL query in Kotlin, to get null returned when database query return Empty set

我正在阅读现有的私人项目代码,但我不理解有关 SQL 查询的一些 Kotlin 代码。

这是 DAO 语句:

interface UserMapper {

    @Select("SELECT userId, phoneNumber FROM users WHERE phoneNumber=#{number} LIMIT 1")
    fun getUserByPhoneNumber(number: String?): User
}

User是这样定义的:

public class User {

        private int userId;
        private String phoneNumber;
}

那我这样调用:

val user = userMapper!!.getUserByPhoneNumber(phonenumber)
if (user != null) {
    doSomething()
} else {
    doOtherthing()
}

第一个问题是关于函数 getUserByPhoneNumber,它只是 return 用户对象吗?

第二个是关于构建警告:

[WARNING] Condition 'user != null' is always 'true'

当查询数据库中不存在的用户时,我该如何解决这个问题?

[更新]:

这是UserMappingmybatis-spring的用法,参考文档是here and here

第一个问题是关于函数 getUserByPhoneNumber,它只是 return 用户对象吗?

是的getUserByPhoneNumberreturn只是一个对象。其实这取决于你的Select query.

第二个是关于构建警告

您正在 returning User 来自 getUserByPhoneNumber 的不可空值,并且您正在检查 null,这就是此警告的原因。

要删除警告,只需将 ? 添加到 return 类型 User 中,如下所示:

interface UserMapper {

    @Select("SELECT userId, phoneNumber FROM users WHERE phoneNumber=#{number} LIMIT 1")
    fun getUserByPhoneNumber(number: String?): User?

}

希望对您有所帮助。如果您还有其他问题,请告诉我。