ActiveAndroid简单使用讲解
现在android 主流数据库框架ormlite activeAndroid greenDao等orm数据库框架的使用,本文主要简单讲解activeAndroid的简单使用讲解,便于大家更好的理解和使用,如有讲解不当之处请予以指出,我们一起探讨。
一:首先就是使用配置
大家首先可以查看activeAndroid的源码地址 https://github.com/pardom/ActiveAndroid 对于使用android studio的用户打大家可以这样配置
repositories {
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'
对于还在使用Eclipse开发android 的朋友们,可以换了使用android studio。哈哈。
二:项目配置讲解
首先在
AndroidManifest.xml
文件中配置数据库名称和数据库版本号。
<manifest ...>
<application android:name="com.activeandroid.app.Application" ...>
...
<meta-data android:name="AA_DB_NAME" android:value="xu.db" />
<meta-data android:name="AA_DB_VERSION" android:value="1" />
</application>
</manifest>
接着,在AndroidManifest.xml
文件中指定application元素的name为 com.activeandroid.app.Application,如果需要自定义Application,需要让你的Application对象继 承自com.activeandroid.app.Application而不是android.app.Application。如果你需要继承其他库 的Application,则需要在Application中初始化和处理ActiveAndroid。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ActiveAndroid.initialize(this);
}
@Override
public void onTerminate() {
super.onTerminate();
ActiveAndroid.dispose();
}
}
三:创建model进行表的创建和使用
创建的模型必须继承Model类,这样你的类名就是你的表名。如果不想使用类名做表名,则可以使用@Table定义表名。@Column用于定义列名。Model类使用无参的构造函数,如果定义自己的构造函数必须定义一个无参的构造函数。案例如下:
@Table(name = "HomepageItem")
public class HomepageItem extends Model {
@Column(name = "item_id")
public String id;//id
@Column(name = "item_name")
public String name;
@Column(name = "item_url")
public String icon;
@Column(name = "item_flag")
public String itemFlag;
}
四;增删改查的使用
1:首先就是单条数据的保存
HomepageItem item = new HomepageItem();
item.name = "demo";
item.save();
2:批量插入
ActiveAndroid.beginTransaction();
try {
for (int i = 0; i < 100; i++) {
HomepageItem item = new HomepageItem();
item.name = "demo"+i ;
item.save();
}
ActiveAndroid.setTransactionSuccessful();
}
finally {
ActiveAndroid.endTransaction();
}
3:数据更新处理
如果使用的还是当前对象或者遍历拿到当前数据对象的话,那么使用save插入方法,也可以直接更新数据库中表的数据处理。也就是
HomepageItem homepageItem = new HomepageItem();
homepageItem.name = "demotwo";
homepageItem.save();
正规的方式当然是根据条件进行更新数据,
new Update(HomepageItem.class).set("item_id = ?", "demo").where("item_name = ?", "小张");
更新条件下
item_name为小张的item_id更新为demo
4:删除处理操作
one:调用delete()方法就可以删除一条记录,下面的例子中,通过id加载一个Item对象,并且删除他。
HomepageItem item = HomepageItem.load(HomepageItem.class, 1);
two:
通过静态方法删除
HomepageItem.delete(HomepageItem.class, 1);
threee:
创建调用Delete对象删除
new Delete().from(HomepageItem.class).where("Id = ?", 1).execute();
four:也可以这样写同上也是创建Delete对象
Delete delete = new Delete();
HomepageItem.delete(HomepageItem.class, 1);
5:查询处理操作
Select select = new Select();
select.from(HomepageItem.class).execute();
其他复杂查询可以根据where条件查询处理操作,
new Select().from(HomepageItem.class).as("a")
.where("Id=1");
ORM框架使用起来确实是很方便的,给我们编码提高了效率,但是也有着致命弊端。前面我们也介绍了ORM的实现的原理是Java的反射机制,反射有个缺点,就是会造成效率不高、耗时较长的现象。当有数据批量操作的时候,会把耗时加长好几倍。所以当遇到业务中有很多的记录要处理的时候,就不推荐大家使用框架了,还是老老实实的写比较靠谱