Room使用

本文介绍了Android Jetpack组件中的Room ORM库,它提供了一种更方便的方式与SQLite数据库交互,支持LiveData和RxJava等。文章详细阐述了Room的使用步骤,包括引入库、定义@Entity实体、创建Dao接口、构建Database以及进行简单的数据库操作。
摘要由CSDN通过智能技术生成

一、Room是什么?

Room是Jetpack组件中一个对象关系映射(ORM)库。可以很容易将 SQLite 表数据转换为 Java 对象。
Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。
支持与LiveData、RxJava、Kotlin协成组合使用。
Google 官方强烈推荐使用Room。

二、使用步骤

1.引入库

代码如下(示例):

plugins {
   
    id 'com.android.application'
    id 'kotlin-android'
    //下面这两句不要忘记加不然会报错
    id 'kotlin-kapt'
    id 'kotlin-android-extensions'
}

android {
   
    compileSdkVersion 30
    buildToolsVersion "30.0.3"

    defaultConfig {
   
        applicationId "com.example.practice"
        minSdkVersion 25
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
   
        release {
   
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
   
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
   
        jvmTarget = '1.8'
    }
}

dependencies {
   

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.2.0'
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

    //下面的库根据自己需求添加
    def room_version = "2.3.0"
    implementation("androidx.room:room-runtime:$room_version")
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // To use Kotlin annotation processing tool (kapt)
    kapt("androidx.room:room-compiler:$room_version")
    // To use Kotlin Symbolic Processing (KSP)
    kapt("androidx.room:room-compiler:$room_version")

    // optional - Kotlin Extensions and Coroutines support for Room
    implementation("androidx.room:room-ktx:$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")
}


2.@Entity 数据库中表对应的实体

代码如下(示例):

package com.example.practice;

import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;

/**
 * @description:
 * @author: 黄剑桥
 * @email: 1437337158@qq.com
 * @date :   2021/8/12 11:45
 */
@Entity
public class Table {
   
    @PrimaryKey(autoGenerate = true)
    private  int id;
    @ColumnInfo(name = "name")
    private String name;
    @ColumnInfo(name = "work")
    private String work
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是room数据库使用方法: 1. 添加依赖:在项目的build.gradle文件中添加以下依赖: ``` implementation 'androidx.room:room-runtime:2.2.5' annotationProcessor 'androidx.room:room-compiler:2.2.5' ``` 2. 创建实体类:创建一个Java类,用于表示数据库中的表。在类上使用@Entity注解,指定表名和字段。例如: ``` @Entity(tableName = "users") public class User { @PrimaryKey(autoGenerate = true) public int id; @ColumnInfo(name = "name") public String name; @ColumnInfo(name = "age") public int age; } ``` 3. 创建DAO:创建一个Java接口,用于定义操作数据库的方法。在接口上使用@Dao注解,指定要操作的实体类。例如: ``` @Dao public interface UserDao { @Insert void insert(User user); @Query("SELECT * FROM users") List<User> getAllUsers(); } ``` 4. 创建数据库:创建一个继承自RoomDatabase的抽象类,用于表示整个数据库。在类上使用@Database注解,指定数据库名称和版本号,并指定要使用的实体类。例如: ``` @Database(entities = {User.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); } ``` 5. 初始化数据库:在应用程序的入口Activity中,初始化数据库。例如: ``` AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "my-db").build(); ``` 6. 使用DAO:通过DAO来操作数据库。 ``` // 插入一条数据 User user = new User(); user.name = "John"; user.age = 18; db.userDao().insert(user); // 查询所有数据 List<User> users = db.userDao().getAllUsers(); ``` 以上就是room数据库使用方法。需要注意的是,这只是room的基本用法,还有很多高级用法可以探索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值