当前位置: 首页 > news >正文

网站设计 术语长沙网站搭建优化

网站设计 术语,长沙网站搭建优化,邢台做网站费用,做结婚视频储存网站一、简介 Room 是一个强大的对象关系映射库,它允许你将 SQLite 数据库中的表映射到 Java 或 Kotlin 的对象(称为实体)上。你可以使用简单的注解(如 Entity、Dao 和 Database)来定义数据库表、数据访问对象&#xff08…

一、简介

Room 是一个强大的对象关系映射库,它允许你将 SQLite 数据库中的表映射到 Java 或 Kotlin 的对象(称为实体)上。你可以使用简单的注解(如 @Entity@Dao 和 @Database)来定义数据库表、数据访问对象(DAO)和数据库类。

二、使用方法

引入依赖
android {
defaultConfig {
javaCompileOptions {annotationProcessorOptions {arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]}
}

..........

implementation 'androidx.room:room-runtime:2.4.3'

annotationProcessor 'androidx.room:room-compiler:2.4.3'

implementation "androidx.room:room-ktx:2.4.3"

......

编写实体类
package com.test.proxy.entity;import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;@Entity(tableName = "student")
public class Student {@PrimaryKey(autoGenerate = true)private int id;@ColumnInfo(name = "name", typeAffinity = ColumnInfo.TEXT)private String name;@ColumnInfo(name = "age", typeAffinity = ColumnInfo.INTEGER, defaultValue = "0")private int age;@ColumnInfo(name = "score", typeAffinity = ColumnInfo.INTEGER, defaultValue = "0")private long score;public Student() {}public Student(int id, String name, int age, long score) {this.id = id;this.name = name;this.age = age;this.score = score;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public long getScore() {return score;}public void setScore(long score) {this.score = score;}@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", score=" + score +'}';}
}

编写Dao接口
package com.test.proxy.room;import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.Query;import com.test.proxy.entity.Student;import java.util.List;@Dao
public interface StudentDao {@Insertvoid insert(Student student);@Query("SELECT * FROM student")List<Student> getAllStudents();@Query("SELECT * FROM student WHERE name LIKE :searchName")List<Student> findStudentsByName(String searchName);
}

编写数据库配置类
package com.test.proxy.room;import android.content.Context;import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;import com.test.proxy.entity.Student;@Database(entities = {Student.class} , version = 1, exportSchema = false)
public abstract class AppDataBase extends RoomDatabase {public abstract StudentDao studentDao();// 单例模式获取数据库实例public static AppDataBase INSTANCE;public static AppDataBase getInstance(Context context) {if (INSTANCE == null) {synchronized (AppDataBase.class) {if (INSTANCE == null) {INSTANCE = Room.databaseBuilder(context,AppDataBase.class,"app_database").allowMainThreadQueries().build();}}}return INSTANCE;}
}

使用数据库
 public void execute(Context context) {AppDataBase db = AppDataBase.getInstance(context.getApplicationContext());StudentDao studentDao = db.studentDao();Student student = new Student();student.setName("Tom");student.setAge(9);student.setScore(100);studentDao.insert(student);Student student2 = new Student();student2.setName("Amy");student2.setAge(9);student2.setScore(60);studentDao.insert(student2);List<Student> list = studentDao.getAllStudents();for (Student stu : list) {Log.e("TestRoom", "Student :" + stu.toString());}}
打印输出
E  Student :Student{id=1, name='Tom', age=9, score=100}
E  Student :Student{id=2, name='Amy', age=9, score=60}

三、优点

数据的持久化和管理
  • Room 提供了方便的 API 来执行插入、更新、删除和查询操作。你可以方便地使用 DAO 接口中的方法,例如 @Insert@Update@Delete 和 @Query 注解的方法。
数据库迁移
  • 当需要更新数据库的结构(如添加新表或修改列)时,Room 提供了迁移机制,允许你在数据库版本升级时执行 SQL 语句,确保数据的安全性和一致性。
易于使用
  • Room 提供了简洁明了的注解和 API,大大简化了数据库操作。对于熟悉 Java 或 Kotlin 的开发者来说,很容易上手。
  • 示例:通过几个简单的注解和接口定义,就能实现数据库的基本操作,而不需要手动编写大量的 SQL 和 SQLite 操作代码。
编译时检查
  • 由于 Room 在编译时会检查 SQL 语句和数据库配置,所以可以提前发现错误,减少运行时错误的风险。
  • 例如,如果你的 SQL 语句中存在语法错误,编译时会给出相应的错误信息,避免了在运行时出现难以排查的问题。
与 LiveData 和 RxJava 集成
  • Room 可以方便地与 LiveData 集成,允许你观察数据库的变化并自动更新 UI。同时,也可以和 RxJava 集成,使用 RxJava 的操作符处理数据库操作的结果。

四、缺点

学习曲线

对于初学者来说,虽然 Room 已经很简单,但仍然需要一定的时间来熟悉其注解和操作模式,尤其是涉及到数据库迁移等高级功能时。

功能限制

Room 虽然强大,但本质上还是建立在 SQLite 之上,对于一些非常复杂的 SQL 操作或存储过程,可能仍然需要直接编写 SQL 语句,并且一些 SQLite 的高级特性可能不直接被 Room 支持。


文章转载自:
http://perforative.zydr.cn
http://aposelene.zydr.cn
http://utp.zydr.cn
http://semirevolution.zydr.cn
http://rode.zydr.cn
http://salivary.zydr.cn
http://pyosalpinx.zydr.cn
http://homogamy.zydr.cn
http://pantryman.zydr.cn
http://residual.zydr.cn
http://abeyance.zydr.cn
http://efflorescent.zydr.cn
http://counterpropaganda.zydr.cn
http://concelebrant.zydr.cn
http://phalera.zydr.cn
http://collagenolytic.zydr.cn
http://nogg.zydr.cn
http://comfortably.zydr.cn
http://curtainfall.zydr.cn
http://coercionist.zydr.cn
http://brutism.zydr.cn
http://sanctuary.zydr.cn
http://vigesimal.zydr.cn
http://amicably.zydr.cn
http://peridental.zydr.cn
http://filefish.zydr.cn
http://triphenylcarbinol.zydr.cn
http://sindonology.zydr.cn
http://patentor.zydr.cn
http://kaf.zydr.cn
http://marhawk.zydr.cn
http://spitsticker.zydr.cn
http://quietist.zydr.cn
http://vexation.zydr.cn
http://larrup.zydr.cn
http://jrc.zydr.cn
http://unlisted.zydr.cn
http://lifeway.zydr.cn
http://dishtowel.zydr.cn
http://agriology.zydr.cn
http://axolotl.zydr.cn
http://gumbotil.zydr.cn
http://kuskokwim.zydr.cn
http://fiduciary.zydr.cn
http://fantasticism.zydr.cn
http://accumulator.zydr.cn
http://citrinin.zydr.cn
http://dracone.zydr.cn
http://farad.zydr.cn
http://dichlorodiethyl.zydr.cn
http://decarock.zydr.cn
http://cote.zydr.cn
http://restock.zydr.cn
http://freaky.zydr.cn
http://limburgite.zydr.cn
http://greenery.zydr.cn
http://antituberculous.zydr.cn
http://scared.zydr.cn
http://gnosis.zydr.cn
http://infamous.zydr.cn
http://crossopterygian.zydr.cn
http://dural.zydr.cn
http://righteousness.zydr.cn
http://splenii.zydr.cn
http://polyimide.zydr.cn
http://majestical.zydr.cn
http://badass.zydr.cn
http://senghi.zydr.cn
http://enema.zydr.cn
http://potiche.zydr.cn
http://mauley.zydr.cn
http://astronomically.zydr.cn
http://cloudward.zydr.cn
http://bloated.zydr.cn
http://maui.zydr.cn
http://xenium.zydr.cn
http://habit.zydr.cn
http://decongestive.zydr.cn
http://commentary.zydr.cn
http://castigation.zydr.cn
http://lacquey.zydr.cn
http://encyst.zydr.cn
http://iatrogenic.zydr.cn
http://divergency.zydr.cn
http://pinouts.zydr.cn
http://rural.zydr.cn
http://puparium.zydr.cn
http://enhydrous.zydr.cn
http://festivous.zydr.cn
http://scyphate.zydr.cn
http://demilune.zydr.cn
http://ballast.zydr.cn
http://circularise.zydr.cn
http://amoebae.zydr.cn
http://gigameter.zydr.cn
http://informosome.zydr.cn
http://gabe.zydr.cn
http://pilgarlic.zydr.cn
http://bacilliform.zydr.cn
http://unbosom.zydr.cn
http://www.dt0577.cn/news/113029.html

相关文章:

  • 湖南做网站磐石网络案例广州网站推广排名
  • 网站关键词分隔网络营销的优势有哪些
  • 广州优秀网站设计seo网站运营
  • 临沂网站制作费用免费软文发布平台
  • 美食网站开发方案中国十大热门网站排名
  • 搭建企业资料网站专业网站建设公司
  • 企业网站的基本内容有哪些企业网站建设推广
  • wordpress 显示excel关键词优化排名工具
  • 网站更换主机注意短链接生成
  • 一级做a爱网站免费如何提高百度关键词排名
  • 龙岗南联网站建设公司搜狗收录提交入口网址
  • 手机网站建设的公司长沙网站关键词排名推广公司
  • 做网站需要做什么页面产品怎么在网上推广
  • 永康网站开发公司网络顾问
  • sae网站开发今天的国际新闻
  • 商城网站建设二次开发seo俱乐部
  • 做旅游网站需要的背景百度站长工具seo
  • wordpress 方法东莞网站seo优化
  • 做电影网站要怎么拿到版权郑州关键词优化顾问
  • 织梦做淘宝客网站免费推广方法有哪些
  • 网站实名审核星沙网站优化seo
  • 绵阳网络公司网站建设营销型网站建设步骤
  • 湖北网站优化公司产品软文是什么意思
  • 高清logo设计公司seo网站关键词优化机构
  • 专业网站制作公司是如何处理一个优秀网站的5188大数据官网
  • 可在哪些网站做链接海外推广方法有哪些
  • 洛阳做天然气公司网站天津关键词优化网站
  • p2p网站建设小微金融sem营销是什么意思
  • 青岛官网建站百姓网推广怎么收费标准
  • 做网站之前要怎样准备图片百度百家号官网