【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());
    }
相关推荐
程序员煊子1 小时前
用 Cursor 从零搭一个 Compose 本地记账 App:实战记录与源码解析
android·kotlin·compose·cursor
alexhilton3 小时前
面向Android开发者的Google I/O 2026
android·kotlin·android jetpack
私人珍藏库3 小时前
【Android】豆图助手-永久HY-模拟微X~zfb各种截图
android·app·工具·软件·多功能
程序员陆业聪5 小时前
Shadow实战接入与生产落地:从零搭建到稳定运行
android
程序员陆业聪5 小时前
Shadow Transform:编译期的魔法——字节码替换实战
android
imuliuliang9 小时前
Laravel6.x核心特性全解析
android·php·laravel
idingzhi10 小时前
A股量化策略日报(2026年05月22日)
android·开发语言·python·kotlin
测试员周周10 小时前
【Appium 系列】第14节-断言与验证 — Validator 的设计
android·人工智能·python·功能测试·ios·单元测试·appium
赏金术士11 小时前
Android 动画对比指南:View 系统 vs Jetpack Compose
android·kotlin·compose
我命由我1234512 小时前
C++ - 面向对象 - 析构函数
android·c语言·开发语言·c++·visualstudio·visual studio·android runtime