0
点赞
收藏
分享

微信扫一扫

Android架构组件Room的使用,基于android的app开发

老王420 2022-01-10 阅读 59

2.Entity:代表一个表结构。

3.Dao:数据访问对象是Room的主要组件,负责定义访问数据库的方法。

声明依赖项


def room_version = “2.3.0”

implementation “androidx.room:room-runtime:$room_version”

annotationProcessor “androidx.room:room-compiler:$room_version”

配置编译器选项

//配置编译器代码

android {

defaultConfig {

javaCompileOptions {

annotationProcessorOptions {

arguments += [

“room.schemaLocation”:"$projectDir/schemas".toString(),

“room.incremental”:“true”,

“room.expandProjection”:“true”]

}

}

}

}

定义数据表

创建图书表

@Entity(tableName = “book”)

class Book {

@PrimaryKey(autoGenerate = true)

var id: Int = 0

@ColumnInfo(name = “bookname”)

var name: String? = “”

constructor(bookname: String?) {

this.name = bookname

}

}

1.定义Dao类

@Dao

interface BookDao {

@Insert

fun addBook(book : Book)

@Query(“SELECT * FROM book”)

fun loadAll(): List<Book?>?

@Query(“select * from book where name = :name”)

fun queryName(name : String) :List<Book?>?

@Delete

fun delete(song: Book?)

}

2.定义数据库和生成数据类

@Database(entities = [Book::class], version = 1)

abstract class RoomDaoManager : RoomDatabase() {

abstract fun BookDao(): BookDao

companion object {

private val DATABASE_NAME = “dev_db.db”

private var databaseInstance: RoomDaoManager? = null

@Synchronized

open fun getInstance(): RoomDaoManager? {

if (databaseInstance == null) {

databaseInstance = Room

.databaseBuilder(

MyApplication.instance(),

RoomDaoManager::class.java,

DATABASE_NAME

)

.allowMainThreadQueries()

.build()

}

return databaseInstance

}

}

}

数据库升级

databaseInstance = Room

.databaseBuilder(

MyApplication.instance(),

RoomDaoManager::class.java,

DATABASE_NAME

)

.allowMainThreadQueries()

.build()

}

return databaseInstance

}

}

}

数据库升级

举报

相关推荐

0 条评论