id} delete from Author where id = #{id} 如果 id 使用了自动生成的列类型...Author (username,password,email,bio) values (#{username},#{password},#{email},#{bio}) 如果你的数据库还支持多行插入..., 你也可以传入一个Authors数组或集合,并返回自动生成的主键。
文/朱季谦 某天检查一位离职同事写的代码,发现其对应表虽然设置了AUTO_INCREMENT自增,但页面新增功能生成的数据主键很诡异,长度达到了19位,且并非是从1开始递增的—— [image.png]...底层ORM框架用的是Mybatis-Plus,我寻思了一下,这看起来像是在插入数据库旧自动生成的id,导致并非默认使用MySql的自增AUTO_INCREMENT的id。...因此,决定一步步定位,先给Mybatis-Plus打印出sql日志,看下其insert语句是否自动生成了一个id,然后才插入数据库。...mapper: debug 接下来,验证一番后,发现,Mybatis-Plus在做insert操作时,确实自动生成了一条长19的数字当做该条数据的id插入到MySql,导致虽然MySql表设置了自增...[image.png] 到这里,就确定,这个长数字的id,是在代码层次就自动生成了,最后进入对应的实体类中,发现该映射数据表的id字段,并没有显示设置对应的主键生成策略。
"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 属性。...,默认的添加重复的数据(主键一致)会抛异常的。
构造函数默认生成规则 2.1 没有显式声明任何构造函数 编译器会自动生成默认的无参构造函数,这一点我们是可以肯定的,那另外几种构造函数也会默认生成吗,这个就不太确定了。...、赋值构造函数、移动构造函数、移动赋值构造函数,并且自动生成的构造函数都是public的,因为它们是可以用于生成对象的,而对于有参构造函数,因为参数是未知的,所以编译器没有办法自动生成。...也就是说当只声明拷贝构造函数的时候,其他构造包括普通构造都不会自动生成,而当声明了普通构造和拷贝构造时,移动构造会自动生成。 3....构造函数自动生成总结 总结一下,构造函数自动生成的规则: 没有显式声明任何构造函数时,会自动生成普通构造函数、拷贝构造函数、赋值构造函数、移动构造函数、移动赋值构造函数五种; 对于带普通参数的构造函数,...显示声明普通构造函数和拷贝构造函数时,会自动生成移动构造函数; 这些构造函数不要求总是全部显式声明,但我们在使用class的时候最好显式声明这五种构造函数,避免出现一些不必要的问题。
本文实例为大家分享了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值 ? ? 以上就是本文的全部内容,希望对大家的学习有所帮助。
△ 组件是一个 Hilt 生成的类,负责提供类型的实例 Hilt 为绝大多数 Android 框架类生成组件 (或称为依赖项容器)。每个组件关联信息 (或称为绑定) 通过组件层次结构向下传递。...当您在 Android 框架类上添加 @AndroidEntryPoint 注解时,Hilt 将在编译期自动生成组件,并完成组件的创建、管理以及关联到与之对应的类中。...,因为我们总是会提供相同的实例作为依赖项。...在添加了 @Provides 注解的方法上,我们可以通过使用 @Singleton 注解来告诉 Hilt 组件总是共享该类型的相同实例。...您还记得我们在文章开头看到的 iosched 中的 FeedViewModel 代码吗?您想看看使用 Hilt 支持之后的效果吗?
Room Database ObjectBox是非SQLite的ORM数据库框架,它自定义了自己的数据库文件,它的文件只有官方提供的工具才能打开,并且对于外键、主键等支持也比较完备,并且效率比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的类
这是一篇自己从Android开发文档中翻译来的关于Room 的文档。...[^] 注意 :要遵循 JavaBean 规约;否则 管杀不管埋;[^] 定义主键 每个实体必须定义最少一个主键,就算类中只有一个字段,也要保证使用 @PrimaryKey; 如果想让Room自动分配ID...Update Room 会通过每个实体的主键进行查询,然后再进行修改。...例如只查询某些地区的用户。 当参数是一个集合的时候,Room 会在运行的时候自动扩展它。...要实现这一点,可以在查询方法使用 LiveData 类行的返回值。当数据更新时 Room 会自动生成所需的代码已更新LiveData。
; 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
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的使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
优势 拥有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层,实现数据的自动更新。
一、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
将忽略它,属性也可以使用这个注解,表示这个属性将不会生成数据库字段 使用@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
一、对象关系映射 - 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 的子类 , 用于创建和访问数据库
在编写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!
' compile 'android.arch.lifecycle:runtime:1.0.0-alpha5' compile 'android.arch.persistence.room...:compiler:1.0.0-alpha5' annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha5..." //数据库迁移的时候使用 compile "android.arch.persistence.room:testing:1.0.0-alpha5" 在项目的build.gradle...如果一个entity中有你不想持久化的field,那么你可以使用@Ignore来注释它们,在项目的db/entities目录下: student.java //也可以使用组合主键,使用@Entity注解的...Date类型的查询都会被自动转换为long类型。
前言 Room数据库是Google的JitPack组件中的一个,推出已经有一段时间了,现在的使用者也越来越多,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做一些改动。
增删改查 四、源码 前言 Room数据库是Google的JitPack组件中的一个,推出已经有一段时间了,现在的使用者也越来越多,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做一些改动。
三者关系图 加入依赖 以上简单的介绍了一下Room 下面我们着重介绍如何在我们的框架当中使用 首先加入依赖 implementation 'android.arch.persistence.room...的使用 1.创建相应的Entity Entity当中常用的几个属性 Primary key 每个entity必须至少定义一个field作为主键(primary key)。...如果你的entity有一个组合主键,你可以使用@Entity注解的primaryKeys属性。 2.tableName Room默认把类名作为数据库的表名。...import android.arch.persistence.room.OnConflictStrategy import android.arch.persistence.room.Query import...import android.arch.persistence.room.Room import android.arch.persistence.room.RoomDatabase import android.content.Context
一、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
领取专属 10元无门槛券
手把手带您无忧上云