【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());
    }
相关推荐
m0_548514773 小时前
2024.12.10——攻防世界Web_php_include
android·前端·php
凤邪摩羯3 小时前
Android-性能优化-03-启动优化-启动耗时
android
凤邪摩羯3 小时前
Android-性能优化-02-内存优化-LeakCanary原理解析
android
喀什酱豆腐4 小时前
Handle
android
m0_748232925 小时前
Android Https和WebView
android·网络协议·https
m0_748251726 小时前
Android webview 打开本地H5项目(Cocos游戏以及Unity游戏)
android·游戏·unity
m0_748254668 小时前
go官方日志库带色彩格式化
android·开发语言·golang
zhangphil8 小时前
Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现“刮刮乐”效果,Kotlin(2)
android·kotlin
爱学测试的李木子8 小时前
从0到1搭建 Android 自动化 python+appium 环境
android·软件测试·python·测试工具·自动化
咸芝麻鱼8 小时前
Android Studio | 连接手机设备后,启动App时出现:Waiting For DebuggerApplication (App名)...
android·adb·智能手机·android studio