irpas技术客

Android Room的简单使用_係軒唔叫轩_android room 使用

网络投稿 1012

Room简单使用

Room是一个持久性数据库,Room持久层库在SQLite上提供了一个抽象层,以便充分利用SQLite的强大功能同时,能够流畅地访问数据库,具有以下优势:

针对SQL查询的编译时验证可最大限度减少重复和容易出错的样板代码的方便注解简化了数据库迁移路径 Room的三个部分 数据库:用于保存数据库,并作为应用持久性数据底层连接的主要访问数据实体:用于表示数据库中的表数据访问对象(DAO):用于增删改查的数据方法 添加依赖 dependencies { def room_version = "2.4.2" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" // optional - RxJava2 support for Room implementation "androidx.room:room-rxjava2:$room_version" // optional - RxJava3 support for Room implementation "androidx.room:room-rxjava3:$room_version" // optional - Guava support for Room, including Optional and ListenableFuture implementation "androidx.room:room-guava:$room_version" // optional - Test helpers testImplementation "androidx.room:room-testing:$room_version" // optional - Paging 3 Integration implementation "androidx.room:room-paging:2.5.0-alpha01" } 创建数据实体-即数据表 @Entity(tableName = “表名”):设置表名@PrimaryKey(autoGenerate = false):当设置为true,让sqlite生成唯一的ID(即添加一个主键)@Entity(primaryKeys = {“username”, “age”}):添加多个主键@Ignore:忽略某个字段 //指定表名,默认情况下表名为类的名字,可使用tableName指定表名 @Entity public class User { //指定id为主键,并自增 @PrimaryKey(autoGenerate = true) public int id; //表示这个字段为一列,默认情况下类名为列名,也可以使用name属性指定列名 @ColumnInfo(name = "username") public String username; @ColumnInfo(name = "age") public int age; //忽略这个字段 @Ignore Bitmap image; }

注意:SQLite的表名和列名不区分大小写

创建数据访问对象(DAO)-即访问数据库的方法 @DAO:指定数据访问对象@Insert:插入数据@Delete:删除数据@Update:更新数据@Query:查询数据 //指定数据访问对象DAO @Dao public interface UserDao { //插入数据 @Insert void insert(User user); //删除数据 @Delete void delete(User user); //更新数据 @Update void update(User user); //获取所有用户数据 @Query("select * from user") List<User> getUserAll(); //查找指定的数据 @Query("select * from user where username = :username and age = :age") List<User> getUserInfo(String username, int age); } 创建数据库类 //指定数据实体类和版本号 @Database(entities = {User.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { //提供返回一个数据访问对象的方法 public abstract UserDao userDao(); } 创建并使用 AppDatabase database = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "test.db").build(); UserDao userDao = database.userDao(); List<User> userDataAll = userDao.getUserAll(); for (User user : userDataAll) { Log.e("TAG", "id: " + user.id); Log.e("TAG", "username: " + user.username); Log.e("TAG", "age: " + user.age); }


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Android #room #使用