【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());
    }
相关推荐
csj501 小时前
安卓基础之《(20)—高级控件(2)列表类视图》
android
JMchen1231 小时前
Android计算摄影实战:多帧合成、HDR+与夜景算法深度剖析
android·经验分享·数码相机·算法·移动开发·android-studio
恋猫de小郭2 小时前
Flutter 在 Android 出现随机字体裁剪?其实是图层合并时的边界计算问题
android·flutter·ios
2501_915918413 小时前
把 iOS 性能监控融入日常开发与测试流程的做法
android·ios·小程序·https·uni-app·iphone·webview
benjiangliu4 小时前
LINUX系统-09-程序地址空间
android·java·linux
独自破碎E4 小时前
字符串相乘
android·java·jvm
DokiDoki之父4 小时前
边写软件边学kotlin(一):Kotlin语法初认识:
android·开发语言·kotlin
REDcker4 小时前
Telegram Android 源码解析完整文档
android
Big Cole4 小时前
PHP面试题(核心基础篇:垃圾回收+自动加载)
android·开发语言·php
雪球Snowball5 小时前
【Android关键流程】WMS的创建
android