@Insert("insert into media_file(name, type, url) values (#{fileName}, #{fileType}, #{fileUrl})") @SelectKey(statement = "select last_insert_id()", keyProperty = "id", before = false, resultType = int.class) int insertAndGetId(MediaFile mediaFile);,表中的id类型是int(20),插入操作是成功的,但是每次返回id都是1,这是为什么
时间: 2024-03-02 14:48:03 浏览: 66
php-file-Upload-to-Database.rar_upload file_文件 服务
根据你提供的信息,每次插入数据后都返回1的问题可能是由于数据库返回的last_insert_id()类型与你的id字段类型不一致导致的。int(20)类型的id字段最大值是2147483647,而last_insert_id()返回的类型是unsigned bigint,最大值是18446744073709551615,超过了int类型的最大值,因此可能导致类型转换错误,返回的始终是1。
为了解决这个问题,你可以将MediaFile实体类中的id字段类型改为Long类型,同时修改@SelectKey注解的resultType属性为java.lang.Long,即:
```
@Insert("insert into media_file(name, type, url) values (#{fileName}, #{fileType}, #{fileUrl})")
@SelectKey(statement = "select last_insert_id()", keyProperty = "id", before = false, resultType = java.lang.Long.class)
int insertAndGetId(MediaFile mediaFile);
```
另外,你也可以将id字段的类型修改为bigint,以适配last_insert_id()返回的unsigned bigint类型。
阅读全文