尝试理解Kotlin中的SQL查询,以便在数据库查询返回Empty set时返回null

时间:2018-01-19 09:14:47

标签: mysql kotlin mybatis

我正在阅读现有的私有项目代码,但我不了解一些关于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,它只是返回User对象吗?

第二个是关于构建警告:

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

如何在查询数据库中不存在的用户时如何解决此问题?

[更新]:

这是UserMappingmybatis-spring的用法,参考文档为herehere

1 个答案:

答案 0 :(得分:2)

第一个问题是关于函数getUserByPhoneNumber,它只是返回User对象吗?

getUserByPhoneNumber只返回一个对象。实际上这取决于你的Select query

第二个是关于构建警告

您将从User返回getUserByPhoneNumber不可空的内容,而您正在检查null,这就是此警告的原因。

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

interface UserMapper {

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

}

希望它有所帮助。如果您还有其他问题,请与我们联系。