今天老师讲解了出去SQLite数据库之外的另一个数据库框架ORMLite,用习惯了SQLite数据库之后,用该框架在注解上有点麻烦,所以在网上查了一下注解,分享给大家
对于 如何使用
1 配置你的Class
为了配置你的class使其持久化,你需要做下面几步:
①添加@DatabaseTable 注解到你每个需要持久化的类的顶部。你也可以用@Entity。
②添加@DatabaseField 注解到你需要持久化的字段的上面。你也可以使用@Column和其他的。
③为每个class添加一个无参的构造器,并且构造器在包内是可见的。
1.1 添加ORMLite 注解
自从java5开始,注解是有效的特殊代码标识,它提供meta信息包括类、方法或成员变量。把指定的类和成员变量存入数据库,ORMLite既支持它自己的注解(@DatabaseTable和 @DatabaseField)也支持很多来自javax.persistence包中标准的注解。注解是配置你的class最简单的方式,当然你也可以使用java代码或者Spring xml(Spring是个框架,更多信息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 |