Tag: kotlin mybatis

尝试了解Kotlin中的SQL查询,以便在数据库查询返回空集合时返回空值

我正在阅读一个现有的私人项目代码,但我不明白一些关于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 ,它是否简单地返回用户对象? 第二个是关于构建警告: [WARNING] Condition ‘user != null’ […]

在Kotlin中带有不可变数据类的MyBatis

Kotlin有这个noarg插件来生成一个合成的noarg构造函数,而不需要帮助JPA(和像mybatis,hibernate这样的框架)实例化一个新的对象。 例如: data class User(val id: Int, val name: String) 鉴于这些属性被声明为val,即不可变,那么这些框架如何创建一个完全烘焙的对象与所有的值设置。 kotlin-noarg插件只是帮助实例化一个新的实例,但是属性(id和name)仍然是不可变的,因此一旦创建对象就不应该被允许改变。 要清楚的是,添加noarg插件后,情况会非常好。 问题是如何,鉴于属性是不变的。 这个问题也谈论这个解决方案,但不是如何部分。

Mybatis将COALESCE(int,0)映射到java.lang.Long

假设我有一个包含两个cols name (varchar(64))& value (int(11))的数据库table ,当我使用: @Select("SELECT table.name table.value FROM table") fun list(): List<Item> table.value将table.value映射到java.lang.Integer ,但如果我使用COALESCE将默认值应用于0: @Select("SELECT table.name COALESCE(table.value, 0) FROM table") fun list(): List<Item> table.value将table.value映射到java.lang.Long 。 为什么?