如何在Kotlin Exposed中使用MySQL的MediumBlob存储图片
在Kotlin Exposed中实现并使用MediumBlob类型
1. 自定义MediumBlob列类型
Exposed未内置MediumBlob支持,需继承BlobColumnType并修改对应SQL类型:
class MediumBlobColumnType : BlobColumnType() { override fun sqlType(): String = "MEDIUMBLOB" }
2. 给Table类扩展便捷方法
为了在数据表定义中直接调用,给Table添加扩展函数:
// 支持可空的MediumBlob列 fun Table.mediumBlob(name: String): Column<ByteArray?> = registerColumn(name, MediumBlobColumnType()) // 可选:非空版本 fun Table.mediumBlob(name: String): Column<ByteArray> = registerColumn(name, MediumBlobColumnType()).apply { isNullable = false }
3. 在数据表中使用
替换原有的blob方法为自定义的mediumBlob即可:
object Orgs : Table() { val id = integer("id").autoIncrement() val photoOrg = mediumBlob("photoOrg").nullable() }
生成的数据库列会是MEDIUMBLOB类型,最大可存储16MB的数据,足以满足普通图片ByteArray的存储需求。
内容的提问来源于stack exchange,提问作者abobus_f1
相关产品推荐
相关产品推荐

