首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mybatis-Plus3.0默认主键策略导致自动生成19位长度主键id

文/朱季谦 某天检查一位离职同事写代码,发现其对应表虽然设置了AUTO_INCREMENT自增,但页面新增功能生成数据主键很诡异,长度达到了19位,且并非是从1开始递增—— [image.png]...底层ORM框架用是Mybatis-Plus,我寻思了一下,这看起来像是在插入数据库旧自动生成id,导致并非默认使用MySql自增AUTO_INCREMENTid。...因此,决定一步步定位,先给Mybatis-Plus打印出sql日志,看下其insert语句是否自动生成了一个id,然后才插入数据库。...mapper: debug 接下来,验证一番后,发现,Mybatis-Plus在做insert操作时,确实自动生成了一条长19数字当做该条数据id插入到MySql,导致虽然MySql表设置了自增...[image.png] 到这里,就确定,这个长数字id,是在代码层次就自动生成了,最后进入对应实体类中,发现该映射数据表id字段,并没有显示设置对应主键生成策略。

4.6K130
您找到你想要的搜索结果了吗?
是的
没有找到

Androidroom数据库使用小结(kotlin)

"android.arch.persistence.room:compiler:1.1.1"写法需换成kapt "android.arch.persistence.room:compiler:1.1.1...接下来最好在 app文件夹下build.gradle中再增加项配置,让编译后自动输出生成schemas,里面有创建和修改表结构sql语句。...简单使用: 第一步,在entiy包中增加实体类定义,每个实体类对应一个表,,类前面加@Entity注解,默认类名就是最终生成表名,如果不想让一致,可以指定表名(@Entity (tableName...使用主键 : 一个Entry中至少需要一个主键,使用@PrimaryKey来注释. 自增类型主键,则可以设置 @PrimaryKey autoGenerate 属性。...,默认添加重复数据(主键一致)会抛异常

3.1K50

c++类构造函数不显式声明会自动生成

构造函数默认生成规则 2.1 没有显式声明任何构造函数 编译器会自动生成默认无参构造函数,这一点我们是可以肯定,那另外几种构造函数也会默认生成,这个就不太确定了。...、赋值构造函数、移动构造函数、移动赋值构造函数,并且自动生成构造函数都是public,因为它们是可以用于生成对象,而对于有参构造函数,因为参数是未知,所以编译器没有办法自动生成。...也就是说当只声明拷贝构造函数时候,其他构造包括普通构造都不会自动生成,而当声明了普通构造和拷贝构造时,移动构造会自动生成。 3....构造函数自动生成总结 总结一下,构造函数自动生成规则: 没有显式声明任何构造函数时,会自动生成普通构造函数、拷贝构造函数、赋值构造函数、移动构造函数、移动赋值构造函数五种; 对于带普通参数构造函数,...显示声明普通构造函数和拷贝构造函数时,会自动生成移动构造函数; 这些构造函数不要求总是全部显式声明,但我们在使用class时候最好显式声明这五种构造函数,避免出现一些不必要问题。

1.2K20

Android屏幕适配工具类 Android自动生成不同分辨率

本文实例为大家分享了Android屏幕适配工具类具体代码,供大家参考,具体内容如下 DimenTool github地址 Android 屏幕适配方案,自动生成不同分辨率android中官方建议屏幕适配方式...然后根据不同尺寸在dimens.xml文件夹中分别计算配置不同dp或者sp单位。开发中发现,android屏幕适配需要用到很多尺寸,每个尺寸都建立dimens.xml问价。...每个文件中数值都要按照比例去计算,一个一个拿着计算器去计算?这样太麻烦了。今天有一个好办法,来为大家介绍一下。...* 快速生成适配工具类 ,直接运行不成功需手动放入目录文件中 */ public class DimenTool { public static void gen() { //以此文件夹下dimens.xml...4.单击鼠标右键,执行Run.Dimentools.main,对应values文件夹下即可生成对用dimens值 ? ? 以上就是本文全部内容,希望对大家学习有所帮助。

1.8K50

AAC---Room使用

Room Database ObjectBox是非SQLiteORM数据库框架,它自定义了自己数据库文件,它文件只有官方提供工具才能打开,并且对于外键、主键等支持也比较完备,并且效率比Room..."android.arch.persistence.room:runtime:$room_version" annotationProcessor "android.arch.persistence.room..."android.arch.persistence.room:testing:$room_version" } 定义数据库 使用entities定义在数据库中存储实体结构 使用version定义数据库版本...每个Entity需要定义至少一个PrimaryKey,也可以通过一个integer类型Id定义@PrimaryKey(autoGenerate = true)自动生成Id 为了提升查询速度,可以通过...在编译完成后,如果没有问题,则会在/app/build/generated/source/apt/debug/pkg/下生成dao_IMPL类,以及数据库相应包名下生成database_IMPL

1.3K20

【Jetpack】使用 Room 框架访问 Android 平台 SQLite 数据库 ( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 )

; plugins { id 'com.android.application' } 如果使用 Kotlin 语言开发 , 需要在 android 插件 基础上 额外导入 kotlin 和...annotationProcessor 'androidx.room:room-compiler:2.2.5' 如果使用 Kotlin 语言开发 , 需要使用 kapt 导入注解处理器 , 用于在编译期间生成代码...参数 , 该 tableName 参数作用是定义数据库表名称 ; @Entity(tableName = "student") class Student { } @PrimaryKey 注解 定义主键..., 使用 @PrimaryKey 注解修饰主键 , 设置 autoGenerate = true 参数 可以令 主键自增 ; 数据库表 列信息 使用 @ColumnInfo 注解定义 , 该注解中参数...' id 'kotlin-kapt' 导入 Room 依赖库 和 编译时生成代码 注解处理器 ; // 导入 Room 依赖库 implementation 'androidx.room

34930

Android架构组件Room使用详解

Room其实就是一个orm,抽象了SQLite使用,但是它作为Android亲儿子orm,并且原生支持LiveData和Rxjava嵌套使用,学习一下还是不错。...repositories { jcenter() google() } } 添加依赖 dependencies { // Room implementation "android.arch.persistence.room...Entity { //定义表名 String tableName() default ""; //定义索引 Index[] indices() default {}; //设为true则父类索引会自动被当前类继承..., "database_name") .build(); 生成数据库实例其他操作 Room.databaseBuilder(getApplicationContext(),...总结 以上所述是小编给大家介绍Android架构组件Room使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家

2.2K10

Jetpack组件之Room

优势 拥有SQLite所有操作功能。 使用简单,通过注解方式实现相关功能,编译时自动生成实现类impl。 与LiveData、LifeCycle及Paging天然支持。...,必须要有,且不为空,autoGenerate 主键值是否由Room自动生成,默认false @PrimaryKey(autoGenerate = true) @ColumnInfo(...每个Entity至少有一个字段作为主键,如果想让数据库为字段自动分配ID,可以使用autoGenerate,如果Entity想有符合主键,可以使用@Entity注解里primaryKeys,设置复合主键...但是,您必须在每次使用这些注解时添加 @CopyAnnotations 注解,以便 Room 可以正确解释这些方法自动生成实现。...与LiveData和ViewModel结合 当Room数据库中数据发生变化时 ,能够通过LiveData组件通知View层,实现数据自动更新。

1.8K20

【Jetpack】Room 预填充数据 ( 安装 DB Browser for SQLite 工具 | 创建数据库文件 | 应用中设预填充数据对应数据库文件 | 预填充数据库表字段属性必须一致 )

一、Room 预填充数据简介 在 Android 中使用 Room 框架 , 创建 SQLite 数据库时 , 有时需要预填充一些数据 , 这些数据一般都是来自 assets 资源目录 ; 如果用户首次打开应用...不变 , 将该字段设置为 非空 / 自增 / 主键 ; 生成 SQL 语句如下 : CREATE TABLE "" ( "id" INTEGER NOT NULL, PRIMARY KEY("id...assets 目录下自动读取 db 数据库文件中数据 , 并将数据初始化本应用数据库表中 ; /** * 配置Room以使用位于预打包数据库创建和打开数据库 * 应用程序“assets/”文件夹...createFromAsset 函数 , 就可以自动从 assets 目录下自动读取 db 数据库文件中数据 , 并将数据初始化本应用数据库表中 ; package kim.hsl.rvl import...android.content.Context import android.util.Log import androidx.room.Database import androidx.room.Room

45220

JetPack--Room数据库

将忽略它,属性也可以使用这个注解,表示这个属性将不会生成数据库字段 使用@PrimaryKey注解指定主键并且是自增长 属性还可以指定在数据库字段等,使用@ColumnInfo注解: package...表进行操作,对接口使用@Dao注解 @Query、@Insert、@Delete、@Update注解,分别表示:查询、新增、删除、更新 增删改操作内部会自动使用主键进行操作 package com.aruba.room...、数据库版本、是否输出日志 使用单例模式时,构造方法不能私有化,因为Room内部会调用构造方法 定义获取Dao对象抽象函数 package com.aruba.room; import android.content.Context...效果: 不过每次我们做了操作后,还需要手动查询下,有没有可以自动刷新数据方法呢?...package com.aruba.room; import android.content.Context; import android.os.AsyncTask; import android.view.View

1.5K20

【Jetpack】ORM 数据库访问框架 Room 简介 ( 对象关系映射 ORM 概念简介 | Room 框架组成部分 - 实体、数据库访问对象、数据库持有者 | Room 框架使用步骤 )

一、对象关系映射 - ORM / Object Relational Mapping ---- Android 系统中使用数据库是 SQLite 关系型数据库 , 使用 Android 提供 api..., Entity 实体类 , 三者之间关系如下 : 首先 , 在 Android 应用中 , 通过 Room 框架 Database 拿到 数据库持有者 对象 ; 然后 , 通过 数据库持有者 Database..."androidx.room:room-runtime:$room_version" // 编译时依赖项 在编译时实时生成 Room 代码 如 : Dao 实现类 / AppDatabase...Query 注解:用于标记 DAO 接口中方法,并指定 SQL 查询语句。 PrimaryKey 注解:用于指定实体类中主键字段。...androidx.room:room-compiler 依赖库 是 Room 持久化库中一个 编译时依赖项 , 用于 在编译时生成 Room 的如下实现代码 : AppDatabase 子类 , 用于创建和访问数据库

1.6K20

android自动生成dimens适配文件图文教程详解(无需Java工具类)

在编写ui界面时因为手机分辨率大小不同,所以展现出来效果也是不同,这个时候就需要考虑适配器,让根据手机分辨率自动适配相应尺寸来展示界面,可以提高用户体验感。...点击OK即可看到自动生成dimens.xml适配文件 ? 之后再布局文件中宽度和高度引用dimen文件中数据,这样可以根据手机尺寸进行自适应展现。...//分割线 <View android:id="@+id/div_tab_bar" android:layout_width="match_parent" android:layout_height="...@dimen/dp_2" android:background="#c9f7e3"/ 到此这篇关于android自动生成dimens适配文件无需Java工具类图文教程详解文章就介绍到这了,更多相关...android自动生成dimens适配文件 内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

1.9K50

Android Room数据库使用

前言   Room数据库是GoogleJitPack组件中一个,推出已经有一段时间了,现在使用者也越来越多,Room是一个轻量级ORM(Object Relational Mapping:对象关系映射...Room其实和Retrofit差不多,Room在开发阶段通过注解方式标记相关功能,编译时自动生成响应impl实现类。...2.3.0表示room最新依赖库版本。 点击Sync进行同步一下。...,这个@Entity就是表示数据库中表,User类对应就是User表,@PrimaryKey表示主键,这里是id,autoGenerate = true 是自增,@NonNull表示不为空。...可以查看到,MyDatabase和UserDao实现类都自动生成了。 三、表操作   表操作无非就是那么几个,增删改查,但是为了更直观显示结果,需要对UI做一些改动。

66520

Android Room数据库使用

增删改查 四、源码 前言   Room数据库是GoogleJitPack组件中一个,推出已经有一段时间了,现在使用者也越来越多,Room是一个轻量级ORM(Object Relational Mapping...Room其实和Retrofit差不多,Room在开发阶段通过注解方式标记相关功能,编译时自动生成响应impl实现类。...,这个@Entity就是表示数据库中表,User类对应就是User表,@PrimaryKey表示主键,这里是id,autoGenerate = true 是自增,@NonNull表示不为空。...param user 根据用户进行删除 */ @Delete void delete(User user); } UserDao是一个接口,主要是定义了一些方法,通过注解在编译时候会生成实现类...可以查看到,MyDatabase和UserDao实现类都自动生成了。 三、表操作   表操作无非就是那么几个,增删改查,但是为了更直观显示结果,需要对UI做一些改动。

1.2K30

【Jetpack】Room + ViewModel + LiveData 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

一、Room + ViewModel + LiveData 框架使用核心要点 1、Room 框架优化分析 在上一篇博客 【Jetpack】使用 Room 框架访问 Android 平台 SQLite 数据库...( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 ) 中 , 实现了 使用 Room 框架访问 Android SQLite 数据库操作...fun query(id: Int): List Room 框架用法 , 参考 【Jetpack】使用 Room 框架访问 Android 平台 SQLite 数据库 (...2.2.5' } 2、Room 框架相关代码 Entity 实体类 Entity 实体类 使用 @Entity 注解修饰 , 并使用 @PrimaryKey 注解修饰主键 , 使用 @ColumnInfo...通过调用 ViewModel 视图模型 , 访问 Room 数据库框架 , 对数据进行增删改查 , 并通过 LiveData 监听数据库中数据 , 如果数据库中数据发生改变 , 自动回调 LiveData

66620
领券