【Android】Room新手快速入门

Room是什么

Room是Google推出的一款android平台上的ORM数据库框架

它类似于GreenDao,但比GreenDao更加简洁高效,是官方推荐使用的数据库框架

引入Gradle依赖

dart 复制代码
    //Room
    api 'androidx.room:room-runtime:2.0.0'
    api 'androidx.room:room-rxjava2:2.0.0'
    annotationProcessor 'androidx.room:room-compiler:2.0.0'

定义表结构

java 复制代码
	package com.android.code;
	
	import androidx.room.Entity;
	import androidx.room.Ignore;
	import androidx.room.PrimaryKey;
	
	@Entity
	public class User {
	
	    @PrimaryKey(autoGenerate = true)
	    public Long recordId;
	
	    public String account;
	
	    public String password;
	
	    public String name;
	
	    @Ignore
	    public transient Object extra;
	}

创建Dao

java 复制代码
	package com.android.code;
	
	import androidx.room.Dao;
	import androidx.room.Delete;
	import androidx.room.Insert;
	import androidx.room.OnConflictStrategy;
	import androidx.room.Query;
	import androidx.room.Update;
	
	import java.util.List;
	
	@Dao
	public interface UserDao {
	
	    @Query("select count(*) from USER")
	    Long count();
	
	    @Query("select * from USER")
	    List<User> loadAll();
	
	    @Insert(onConflict = OnConflictStrategy.REPLACE)
	    void insert(User user);
	
	    @Insert(onConflict = OnConflictStrategy.REPLACE)
	    void insertAll(List<User> users);
	
	    @Update
	    void update(User user);
	
	    @Update
	    void updateAll(List<User> users);
	
	    @Delete
	    void delete(User user);
	
	    @Delete
	    void deleteAll(List<User> users);
	}

创建Database

java 复制代码
	package com.android.code;
	
	import androidx.room.Database;
	import androidx.room.RoomDatabase;
	
	@Database(
	        entities = {User.class},
	        version = 1,
	        exportSchema = false
	)
	public abstract class UserDatabase extends RoomDatabase {
	
	    public abstract UserDao userDao();
	}

通过Room读写数据库

java 复制代码
    //初始化工作
    new Thread(this::init).start();

    //初始化工作
    protected void init() {
        UserDatabase database = Room.databaseBuilder(getApplicationContext(), UserDatabase.class, "room-database").build();
        UserDao userDao = database.userDao();
        User user1 = new User();
        User user2 = new User();
        List<User> userList = Stream.of(user1, user2).collect(Collectors.toList());
        userDao.insertAll(userList);
        Log.e(TAG, userDao.count().toString());
    }
相关推荐
橙子199110162 分钟前
在 Kotlin 中,什么是解构,如何使用?
android·开发语言·kotlin
androidwork1 小时前
Android 中使用通知(Kotlin 版)
android·kotlin
Digitally2 小时前
如何从 Android 设备打印短信(5 种方法)
android
casual_clover2 小时前
Android 中 打开文件选择器(ACTION_OPEN_DOCUMENT )
android
_龙小鱼_3 小时前
卡顿检测与 Choreographer 原理
android·kotlin
云手机管家4 小时前
账号风控突破:云手机设备指纹篡改检测与反制技术解析
android·运维·网络协议·网络安全·智能手机·矩阵·自动化
千里马-horse5 小时前
Detected for tasks ‘compileDebugJavaWithJavac‘ (17) and ‘kspDebugKotlin‘ (21).
android·jdk·kspdebugkotlin
柯南二号7 小时前
【Android】Android 实现一个依赖注入的注解
android
archko9 小时前
语音识别-3,添加ai问答
android·人工智能
奔跑吧 android14 小时前
【android bluetooth 案例分析 03】【PTS 测试 】【PBAP/PCE/SGSIT/SERR/BV-01-C】
android·pts·aosp·pbap·sgsit