首页 > 其他分享 >3.19

3.19

时间:2024-03-19 20:44:05浏览次数:25  
标签:3.19 room 标签 age Room ColumnInfo name

Android采用Sqlite作为数据库存储。Sqlite代码写起来繁琐且容易出错,所以开源社区里逐渐出现了各种ORM(Object Relational Mapping)库。这些开源ORM库都是为了方便Sqlite的使用,包括数据库的创建,升级,增删改查等。常见的ORM有ORMLite,GreenDAO等。Google也意识到了推出自家ORM的必要性,于是有了Room。

Room和其它ORM库一样,也是在Sqlite上提供了一层抽象。

在介绍Room的使用之前,我们需要先明白几个概念。

Entity:这是一个Model类,对应于数据库中的一张表。Entity类是Sqlite表结构在Java类的映射。

Dao:(Data Access Objects)数据访问对象,顾名思义,我们可以通过它来访问数据。

一个Entity代表着一张表,而每张表都需要一个Dao对象,以方便对这张表进行各种操作(增删改查)

大致明白这两个概念后,我们再来看看如何在项目中使用。

1.在app的build.gradle中加入room的相关依赖。

  1.   def room_version = "2.2.0-alpha01"
  2.   implementation "androidx.room:room-runtime:$room_version"
  3.   annotationProcessor "androidx.room:room-compiler:$room_version"

2.创建一个关于学生的Entity,即创建一张学生表。

我们在类文件的最上方需要加上@Entity标签,通过该标签将该类与Room中表关联起来。tableName属性可以为该表设置名字,如果不设置,则表名与类名相同。

@PrimaryKey标签用于指定该字段作为表的主键。

@ColumnInfo标签可用于设置该字段存储在数据库表中的名字并指定字段的类型。

@Ignore标签用来告诉系统忽略该字段或者方法。

@Entity(tableName = "student")
public class Student
{
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id", typeAffinity = ColumnInfo.INTEGER)
public int id;

@ColumnInfo(name = "name", typeAffinity = ColumnInfo.TEXT)
public String name;

@ColumnInfo(name = "age", typeAffinity = ColumnInfo.TEXT)
public String age;

/**
* Room会使用这个构造器来存储数据,也就是当你从表中得到Student对象时候,Room会使用这个构造器
* */
public Student(int id, String name, String age)
{
this.id = id;
this.name = name;
this.age = age;
}

/**
* 由于Room只能识别和使用一个构造器,如果希望定义多个构造器,你可以使用Ignore标签,让Room忽略这个构造器
* 同样,@Ignore标签还可用于字段,使用@Ignore标签标记过的字段,Room不会持久化该字段的数据
* */
@Ignore
public Student(String name, String age)
{
this.name = name;
this.age = age;
}
}

标签:3.19,room,标签,age,Room,ColumnInfo,name
From: https://www.cnblogs.com/wcy1111/p/18083914

相关文章

  • 随笔,发散了 3.19
    okihavefinishedthelisteningandthereadingtasks.andnowineedtowritesomething ohicansharesomedreamswithu iwilldreamsomethingwiredwheniwassleeping.butIcannotreallyrememberallthedreams. irememberedadreamthatiwas......
  • 2024.03.19【文字排版】作为设计师 这三个功能不用还是尽量别用
    第一个功能-黑色加粗的“B”它是Bold的简写,可以通过这一功能将字体给加粗加大一号。可是实际上这个功能并不是把字体变成大一号,而是单纯的给字体加上一个外轮廓,这样不仅破坏了设计师原本的字形轮廓设计,可选粗细单一而且会使得字体变形,看着不美观也不自然所以大部分字库都会......
  • dolphinscheduler报错:Connect to 192.168.xx.xx:8088 [192.168.xx.xx/110.173.196.1]
    报错信息:在dophin中抽取mysql的数据到hive中报错[ERROR]2023-10-2015:33:10.461org.apache.dolphinscheduler.common.utils.HttpUtils:[73]-Connectto192.168.xx.xx:8088[192.168.xx.xx/110.173.196.1]failed:connecttimedoutorg.apache.http.conn.ConnectTimeout......
  • 2023.19 国内哪些职业容易被GPT取代
    看到下面这篇文章分析了中国职业被GPT替代的可能性,结论不一定对,目前GPT的推理回答还会存在错误,但其实现方法及分析还是可以学习参考的。文中分析中国职业被GPT替代的可能性的实现方法是将职业拆分成要完成的任务,再把任务拆分成具体的工作,然后标注评估每一项具体工作被GPT替代的概......
  • 2023.3.19周报
    本周总结:刷了洛谷一些动态规划蓝题紫题大方向:动态规划小专题:树型DP、区间DP题目完成情况:15 ......
  • 【LeetCode】3.19 对称二叉树
    101.对称二叉树​ 给你一个二叉树的根节点root,检查它是否轴对称。示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:fa......
  • 3.19 基本Dos命令
    常用的Dos命令1.盘符切换:(英文状态下)例C盘换D盘(直接在后边加所要换盘的名称和冒号)  2查看当前目录下的所有文件名    :   直接加Dir3切换目录(用cd......
  • 上周热点回顾(3.13-3.19)
    热点随笔:· 为什么C#可能是最好的第一编程语言 (张善友)· 【个人首测】百度文心一言VSChatGPTGPT-4 (机器学习算法与Python)· Linux系统下祼机安装mysql8.0和......
  • 2023.3.19 规划
    规划比赛里面写不出来的,cf和atc打少了,自己模拟少了;但是这东西我得先知道,会写模板才行;主流的算法都得会不能到哪都简单搜索,那就到哪里都坐牢;所以先是去选择最靠......
  • 2023.3.19周学习总结
    一.本周任务进度1.线段树分裂合并学习完,并且练习了几个题2.上周的补题也补完了3.打了一把牛客和两把cf还有一把abc4.学习了斜率优化DP的凸包优化二.......