一、简介
OrmLite是一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机率。
首先可以去它的官网看看www.ormlite.com,它的英文全称是Object Relational Mapping,意思是对象关系映射;如果接触过Java EE开发的,一定知道Java Web开发就有一个类似的数据库映射框架——Hibernate。简单来说,就是我们定义一个实体类,利用这个框架,它可以帮我们吧这个实体映射到我们的数据库中,在Android中是SQLite,数据中的字段就是我们定义实体的成员变量。
优点
1)轻量级
2)使用简单,易上手
3)封装完善
4)文档全面
缺点
1)基于反射,效率较低
2)缺少中文翻译文档
二、运用
1. 集成
首先到Ormlite官网下载Android的架包:http://ormlite.com/releases/。
可以看到,目前最新版本为4.49,对于Android的架包为: ormlite-android-4.48.jar 和 ormlite-core-4.48.jar。把两个jar拷贝到libs下,一般Gradle里面都会包含编译libs:
compile fileTree(dir: 'libs', include: ['*.jar'])
编译后就可以看到以上架包结构。
2.配置Bean类
数据库肯定离不开Bean类,先来看看我建的一个User类:
@DatabaseTable(tableName = "user")
public class User {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField(columnName = "name")
private String name;
@DatabaseField(canBeNull = false, columnName = "desc")
private String desc;
/*关键啊,一定要加, 为每个class添加一个无参的构造器,并且构造器在包内是可见的*/
public User() {}
public User(String name, String desc) {
this.name = name;
this.desc = desc;
}
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 String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
首先在User类上添加@DatabaseTable(tableName = “user”),标明这是数据库中的一张表,标明为user;然后分别在属性上添加@DatabaseField(columnName = “name”) ,columnName的值为该字段在数据中的列名@DatabaseField(generatedId = true) ,generatedId 表示id为主键且自动生成,canBeNull表示该属性的内容不能为空,下面来介绍更多常用的属性设置:
成员名 | 数据类型 | 描述 |
---|---|---|
generatedId | Boolean | 字段是否自动增加。默认为false。类中的一个成员变量设置了这个值,它告诉数据库每添加一条新记录都自动增加id。当一个有generatedid的对象被创建时使用Dao.create()方法,数据库将为记录生成一个id,它会被返回并且被create方法设置进对象。 |
columnName | String | 数据库的列名。如果你没有设置这个成员名,会用标准的形式代替它。 |
canBeNull | Boolean | 字段是否能被分配null值。默认是true。如果你设置成false,那么你每次在数据库中插入数据是都必须为这个字段提供值。 |
dataType | 字段的数据类型。通常情况下,数据类型是从java类的成员变量获取的,并不需要进行特殊指出。它相当于是SQL的数据类型。 | |
defaultValue | String | 当我们在表中创建新的记录时的一个字段的默认值。默认情况下是没有这个值的。 |
width | Integer | 字段的宽度,主要用于字符串字段。默认是0,意味着采用默认的数据类型和具体的数据库的默认情况。 |