Android开发:ActiveAndroid的使用

activeandroid-3.1-3.jar activeandroid-3.1-3.jar, 立即下载

ActiveAndroid是采用活动记录(Active Record)架构模式设计的适用于Android平台的轻量级ORM架构。

github主页:https://github.com/pardom/ActiveAndroid

1.导入ActiveAndroid包

在Project的build.gradle中配置:

allprojects {
    repositories {
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    }
}

在app的build.gradle中配置:

compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'

2.配置与初始化

首先在AndroidManifest.xml文件中配置数据库名称和数据库版本号。

  1. <manifest ...>
  2.     <application android:name="com.activeandroid.app.Application" ...>
  3.  
  4.         ...
  5.  
  6.         <meta-data android:name="AA_DB_NAME" android:value="Pickrand.db" />
  7.         <meta-data android:name="AA_DB_VERSION" android:value="5" />
  8.     </application>
  9. </manifest>
  • AA_DB_NAME:数据库名

  • AA_DB_VERSION:数据库版本号,默认是1。

接着,在AndroidManifest.xml文件中指定application元素的name为 com.activeandroid.app.Application,如果需要自定义Application,需要让你的Application对象继 承自com.activeandroid.app.Application而不是android.app.Application。如果你需要继承其他库 的Application,则需要在Application中初始化和处理ActiveAndroid。

  1. public class MyApplication extends SomeLibraryApplication {
  2.     @Override
  3.     public void onCreate() {
  4.         super.onCreate();
  5.         ActiveAndroid.initialize(this);
  6.     }
  7.     @Override
  8.     public void onTerminate() {
  9.         super.onTerminate();
  10.         ActiveAndroid.dispose();
  11.     }
  12. }

3.创建Model

创建数据库模型非常简单,创建的模型必须继承Model类,这样你的类名就是你的表名。如果不想使用类名做表名,则可以使用@Table定义表名。@Column用于定义列名。Model类使用无参的构造函数,如果定义自己的构造函数必须定义一个无参的构造函数。

  1. @Table(name = "Categories")
  2. public class Category extends Model {
  3.     @Column(name = "Name")
  4.     public String name;
  5. }
  6.  
  7. @Table(name = "Items")
  8. public class Item extends Model {
  9.     @Column(name = "remote_id", unique = true, onUniqueConflict = Column.ConflictAction.REPLACE)
  10.     public int remoteId;
  11.     @Column(name = "Name")
  12.     public String name;
  13.  
  14.     @Column(name = "Category")
  15.     public Category category;
  16.  
  17.         public Item(){
  18.                 super();
  19.         }
  20.         public Item(String name, Category category){
  21.                 super();
  22.                 this.name = name;
  23.                 this.category = category;
  24.         }
  25. }

4.增删改查

4.1 插入

4.1.1 单条插入

保存一条记录,只需要创建一个模型的实例,并为每个字段指定值,然后调用save()方法。

  1. Category restaurants = new Category();
  2. restaurants.name = "Restaurants";
  3. restaurants.save();

4.1.2批量插入

  1. ActiveAndroid.beginTransaction();
  2. try {
  3.         for (int i = 0; i < 100; i++) {
  4.             Item item = new Item();
  5.             item.name = "Example " + i;
  6.             item.save();
  7.         }
  8.         ActiveAndroid.setTransactionSuccessful();
  9. }
  10. finally {
  11.         ActiveAndroid.endTransaction();
  12. }

4.2 更新

更新一个字段

  1. new Update(Person.class).set( "name=?",  name).execute();

更新两个字段

  1. new Update(Person.class).set("age=?," + "name=?", age, name).execute();

更新满足name 和 sex条件下的age字段

  1. new Update(Person.class).set("age=?" , age).where("name=? and sex=?",name , sex).execute();

4.3 删除

调用delete()方法就可以删除一条记录,下面的例子中,通过id加载一个Item对象,并且删除他。

  1. Item item = Item.load(Item.class, 1);
  2. item.delete();

也可以通过静态方法删除

  1. Item.delete(Item.class, 1);

也可以创建调用Delete对象删除

  1. new Delete().from(Item.class).where("Id = ?", 1).execute();
  1. new Delete().from(Item.class).where("Id = ? and name =?", 1,“小明”).execute();

4.4 查询

查询一条:

  1. public static Item getRandom(Category category) {
  2.     return new Select()
  3.         .from(Item.class)
  4.         .where("Category = ?", category.getId())
  5.         .orderBy("RANDOM()")
  6.         .executeSingle();
  7. }

查询所有:

  1. public static List<Item> getAll(Category category) {
  2.     return new Select()
  3.         .from(Item.class)
  4.         .where("Category = ?", category.getId())
  5.         .orderBy("Name ASC")
  6.         .execute();
  7. }

 

 

Mediapipe姿态估计——用坐标计算手指关节弯曲角度并实时标注 利用mediapipe搭建姿态检测模型;mediapipe人体标注节点坐标;mediapipe计算手指弯曲角度并实时渲染;mediapipe计算关节弯曲角度。mediapipe手势识别;mediapipe姿态检测模型;mediapipe学习。 阅读详情

相关推荐

各种加法器的比对分析与Verilog实现(3)

了Kogge-Stone加法器和brent-kung加法器,本文将用Verilog代码进行实现。

Albert_yeager的博客 1199

Android ORM 框架之 ActiveAndroid应用基础

ActiveAndroid作为轻量级的ORM框架,在快速开发中,使用很简单,满足大部分对数据库操作不复杂的应用。一,配置添加依赖build.gradle中添加:repositories { mavenCentral() maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } }compile '

欸奥维 2901

为什么你的ESXI无法识别移动硬盘?一步步教你解决USB存储挂载问题

本文深入解析了ESXi无法识别移动硬盘的根本原因,并提供了从诊断到解决的完整方案。核心在于理解ESXi的USB Arbitrator服务机制,通过检查服务状态、内核设备识别及分区表,逐步定位问题。文章详细指导了如何禁用USB仲裁服务以在主机挂载USB存储,或将其直通给虚拟机,并针对大容量硬盘、USB 3.0兼容性等进阶问题给出了实用建议。

qq_27496129的博客 332

ActiveAndroid 使用教程

ActiveAndroid 使用教程 项目介绍 ActiveAndroid 是一个为 Android 平台设计的开源 ORM(对象关系映射)框架。它允许开发者通过面向对象的方式来操作 SQLite 数据库,而无需编写复杂的 SQL 语句。ActiveAndroid 通过将 Java 类映射到数据库表,并将类的成员变量映射到表的列,简化了数据库操作。 项目快速启动 引入 ActiveAndroid ...

gitblog_01111的博客 1010

【Unity动画系统】详解Root Motion动画在Unity中的应用(一)

什么时候勾选Bake into pose,当不希望动画带动游戏对象旋转时。在旋转的动画中一般是不用勾选的,因为就需要用它来带动我们的角色对象旋转。但在比如前进、后退、待机等动画来说,我们就可以勾选这里,以避免因动画文件本身的瑕疵而给我们带来的旋转。loop match:代表了这个动画在角度上的吻合度。如果这个动画在播放中转角过大,那么就会显示红色,告诉我们如果勾选bake into pose,则会带来不好的效果。

weixin_60154963的博客 6805

DB2__基本概念——联邦

建立联邦 优点:优点是数据仍然保留在原来的存储位置,而不必建立一个集中的式数据仓储。  缺点:数据联邦查询反映会慢,不适合频繁查询,而且容易出现锁争用和资源冲突等问题 建立联邦表步骤 前提条件:知道两个数据库的ip,用户名,密码及被连数据库的版本 eg:  数据库  qqdb  ip: 22.5.225.225   端口:50000    密码:123456        数据库   ...

qq_38569524的博客 1257

Android中数据库操作框架ActiveAndroid介绍与使用

ActiveAndroid是一种Active Record 风格的ORM框架,它可以极大的简化数据库的使用,使用面向对象的方式管理数据库,告别手写SQL历史。每一个数据库表都可以映射为一个类,开发者只需要使用类似save()或者delete()这样的函数即可。 一、添加依赖,把下面的代码添加到工程的build.gradle中: repositories { maven

MG_ZXC的专栏 609

浙政钉(专有钉钉)门户免登(超详细)

钉钉家族 介绍浙政钉门户免登之前,首先搞清楚几个软件的关系,软件分别是:钉钉,专有钉钉,浙政钉 钉钉 是阿里巴巴集团专为中小企业打造的沟通和协同的多端平台。 专有钉钉 原名 政务钉钉,有更开放的设计能力、集成能力、更结构化协同产品、更定制化开发平台。支持专有化部署,数据落本地,更安全、客户可对该产品持牌运营、结构化编排,协助构建本地应用中心、提供移动应用全面安全保障体系。 浙政钉 为规范浙政钉整体架构体系,按照统分结合原则,由省政府办公厅统一设计整体工作界面和系统框架,统筹指导全省统建应用建设,各单

一缕南风的博客 2万+

Android activeandroid使用

activeandroid是一个开源的数据库框架,使我们操作数据库更方便,简单。 1:添加依赖: a:在项目的build.gradle文件添加: allprojects { repositories { google() jcenter() mavenCentral() maven { url "https://oss...

androidzmm的博客 2889

uniapp [安卓苹果App端] - 解决支付宝支付报错requestPayment:fail [payment支付宝:62009]未知错误,使用uni.requestPayment支付报错排查方案

uni-app支付宝,uniapp支付宝沙箱支付报错,uni.requestPayment,uniAPP App支付宝支付提示错误requestPayment:fail [payment支付宝:62009]未知错误,UNI-APP支付宝报错"code": -100,uniapp 解决安卓App使用uni.requestPayment实现沙箱环境支付宝支付报错,uniapp安卓app使用支付宝的沙箱环境支付时报了这个错,安卓端app支付宝支付,在沙箱测试环境测支付,提示“商家订单参数异常,请重新发起付款,选择

🏆 前端领域优质创作者 9612

MIKE水动力笔记4_制作网格

建立水动力模型前的重要一步就是制作网格,本文所讲内容就是如何在MIKE中制作网格。

晏长街的博客 2万+

电脑异常关机后,AS报错,无法编译工程Could not load module metadata from ..

由于某些原因,电脑异常关机重启。重新打开AS时,同步工程报错,更无法编译。错误信息如下: Error:Could not resolve all dependencies for configuration ':app:debugCompileClasspath'. Could not load module metadata from C:\Users\nirzo\.gradle\c...

bendan50的博客 1万+

数学建模学习(78):多输入多输出回归预测模型(结合XGBoost实现)

多输入多输出回归预测问题求解

全栈川川 8131

最好的5个Android ORM框架

在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter )。 对于第一种方式,即本地数据存储,如嵌入式SQLLite,你可以选择直接使用SQL语句、Content Provider 或 ORM(对象关系数据映射)。 本文是对5个可用Android ORM框架的总体介绍。

陈小峰(iefreer)的专栏 4万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android开发者必知的5个开源库

过去的时间里,Android开发逐步走向成熟,一个个与Android相关的开发工具也层出不穷。不过,在面对各种新鲜事物时,不要忘了那些我们每天使用的大量开源库。在这里,向大家介绍的就是,在这个任劳任怨的大家庭中,最受开发者喜爱的五个Android库。希望通过对它们的了解,能够对你的开发工作有所帮助。 1. GSON Gson是Google提供的用来在Java对象和JSON数据之间进

键盘的起始页 1164

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android开发逐步走向成熟.而无论出现多少Android相关的开发工具,我们每

摘要:过去的时间里,Android开发逐步走向成熟.而无论出现多少Android相关的开发工具,我们每天使用的大量开源库却始终是不可或缺的.这里,向大家介绍的是,这个任劳任怨的大家庭中,最受开发者喜爱的五个Android库.     过去的时间里,Android开发逐步走向成熟,一个个与Android相关的开发工具也层出不穷.不过,在面对各种新鲜事物时,不要忘了那些我们每天使用的大量开源库.在这

txjcdrrm的专栏 476

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

最受欢迎的5个Android ORM框架

最受欢迎的5个Android ORM框架 在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择)。 对于第一种方式,即本地数据存储,如嵌入式SQLite,你可以选择直接使用SQL语句、Content Provider 或 ORM(对象关系数据映射)。

chenhuakang的博客 411
上一篇: Android开发 :调用系统相机拍照保存照片并显示在当前界面
下一篇: Android开发:MPAndroidChart使用
android157
博客等级 码龄9年 193粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值