Android数据库ORMLite框架的注解

来源:互联网 发布:下载windows系统的网站 编辑:程序博客网 时间:2024/05/16 01:43

今天老师讲解了出去SQLite数据库之外的另一个数据库框架ORMLite,用习惯了SQLite数据库之后,用该框架在注解上有点麻烦,所以在网上查了一下注解,分享给大家

对于 如何使用

配置你的Class

为了配置你的class使其持久化,你需要做下面几步:

①添加@DatabaseTable 注解到你每个需要持久化的类的顶部。你也可以用@Entity

②添加@DatabaseField 注解到你需要持久化的字段的上面。你也可以使用@Column和其他的。

③为每个class添加一个无参的构造器,并且构造器在包内是可见的。

 

1.1 添加ORMLite 注解

自从java5开始,注解是有效的特殊代码标识,它提供meta信息包括类、方法或成员变量。把指定的类和成员变量存入数据库,ORMLite既支持它自己的注解(@DatabaseTable和 @DatabaseField)也支持很多来自javax.persistence包中标准的注解。注解是配置你的class最简单的方式,当然你也可以使用java代码或者Spring xmlSpring是个框架,更多信息google一下)对class进行配置。

ORMLite注解,对每个你想要持久化到SQL数据库的java类你都需要添加@DatabaseTable注解到public class 这一行的正上方。每个被这些注解标记过的class都将持久化到它自己的数据库表中。例如:

@DatabaseTable(tableName = "accounts")public class Account {...

 

@DatabaseTable注解可以有个可选的tableName 参数,也就是这个类对于的表名。如果没有特别指出,那么这个类名将默认作为表名。使用示例中的Account的对象都将会作为一条记录持久化到数据库名为account的表中。这将会在DaoManager实例化内部Dao的时候使用到。

除此之外,对于每个class你需要添加@DatabaseField注解到class的成员变量上,这个类是需要持久化到数据库的。每个成员变量都将被作为数据库中记录的一个字段进行持久化。示例:

 

复制代码
@DatabaseTable(tableName = "accounts")public class Account {@DatabaseField(id = true)private String name;@DatabaseField(canBeNull = false)private String password;...
复制代码

 

name字段,它是一个字符串并且是数据库中记录的唯一标识(主键)。在上面的示例中,account表的每条记录都有两个字段:

password字段,它也是一个字符串,它不能为null

@DatabaseField注解可以用下面的一些成员:(对常用的字段进行翻译,其他的参考原文)


常用的注解

成员名

数据类型

描述

columnName

String

数据库的列名。如果你没有设置这个成员名,会用标准的形式代替它。

dataType

 

字段的数据类型。通常情况下,数据类型是从java类的成员变量获取的,并不需要进行特殊指出。它相当于是SQL的数据类型。

defaultValue

String

当我们在表中创建新的记录时的一个字段的默认值。默认情况下是没有这个值的。

width

Integer

字段的宽度,主要用于字符串字段。默认是0,意味着采用默认的数据类型和具体的数据库的默认情况。对于字符串以为在255个字符即使有些数据库并不支持。

canBeNull

Boolean

字段是否能被分配null值。默认是true。如果你设置成false,那么你每次在数据库中插入数据是都必须为这个字段提供值。

id

Boolean

这个字段是否是id,默认是false。在一个class中只有一个成变量可以有这个值。id字段是一条记录的唯一标识而且是必需的,只有generatedId和 generatedIdSequence其中之一。

generatedId

Boolean

字段是否自动增加。默认为false。类中的一个成员变量设置了这个值,它告诉数据库每添加一条新记录都自动增加id。当一个有generatedid的对象被创建时使用Dao.create()方法,数据库将为记录生成一个id,它会被返回并且被create方法设置进对象。

generatedIdSequence

String

序列编号的名字,这个值在生成的时候会被使用。和generatedId相似,但是你能够指定使用的序列名称。默认是没有的。一个class中只有一个成员变量可以设置这个值。这仅仅在数据库需要序列生成id时才需要它。如果你选择使用generatedId代替它,那么代码将自动增加序列名。

 

其他注解

foreign

throwIfNull

useGetSet

persisted

unknownEnumName

format

uniqueIndexName

allowGeneratedIdInsert

foreignAutoRefresh

columnDefinition

unique

uniqueIndex

uniqueCombo

indexName

index

uniqueIndexName

version

maxForeignAutoRefreshLevel

foreignColumnName

foreignAutoCreate


0 0
原创粉丝点击