赞
踩
在build.gradle中配置
ohos {
...
compileOptions{
annotationEnabled true
}
}
dependencies {
...
compile files("D:\\soft\\DevEco\\java\\2.1.1.18\\api\\ohos.jar","D:\\soft\\DevEco\\java\\2.1.1.18\\build-tools\\lib\\orm_annotations_java.jar","D:\\soft\\DevEco\\java\\2.1.1.18\\build-tools\\lib\\orm_annotations_processor_java.jar","D:\\soft\\DevEco\\java\\2.1.1.18\\build-tools\\lib\\javapoet_java.jar")
annotationProcessor files("D:\\soft\\DevEco\\java\\2.1.1.18\\build-tools\\lib\\orm_annotations_java.jar","D:\\soft\\DevEco\\java\\2.1.1.18\\build-tools\\lib\\orm_annotations_processor_java.jar","D:\\soft\\DevEco\\java\\2.1.1.18\\build-tools\\lib\\javapoet_java.jar")
}
上面的jar 是我电脑里面sdk里面的地址,要换成你自己的哦
构造数据表,即创建数据库实体类并配置对应的属性(如对应表的主键,外键等)。数据表必须与其所在的数据库在同一个模块中。
例如,定义了一个实体类User.java,对应数据库内的表名为“user”;indices 为“firstName”和“lastName”两个字段建立了复合索引“name_index”,并且索引值是唯一的;“ignoredColumns”表示该字段不需要添加到“user”表的属性中。
@Entity(tableName = "user", ignoredColumns = {"ignoredColumn1", "ignoredColumn2"},
indices = {@Index(value = {"firstName", "lastName"}, name = "name_index", unique = true)})
public class User extends OrmObject {
// 此处将userId设为了自增的主键。注意只有在数据类型为包装类型时,自增主键才能生效。
@PrimaryKey(autoGenerate = true)
private Integer userId;
private String firstName;
private String lastName;
private int age;
private double balance;
private int ignoredColumn1;
private int ignoredColumn2;
// 开发者自行添加字段的getter和setter 方法。
}
定义了一个数据库类BookStore.java,数据库包含了“User”,“Book”,"AllDataType"三个表,版本号为“1”。数据库类的getVersion方法和getHelper方法不需要实现,直接将数据库类设为虚类即可。
这里是三个表 我上面只创建了一个表,如果用一个表就把别的表名删了,如果想创建另外两个表一定注意索引的name_index这个值不要重复,可以交book_index什么的,但是绝对不能再叫name_index 否则闪退。
@Database(entities = {User.class, Book.class, AllDataType.class}, version = 1)
public abstract class BookStore extends OrmDatabase {
}
然后在调用的 slice里面
public class MainAbilitySlice extends AbilitySlice { @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); DatabaseHelper helper = new DatabaseHelper(this); // context入参类型为ohos.app.Context,注意不要使用slice.getContext()来获取context,请直接传入slice,否则会出现找不到类的报错。 //新增两个后面删除用 OrmContext context = helper.getOrmContext("BookStore", "BookStore.db", BookStore.class); User user = new User(); user.setFirstName("Zhang"); user.setLastName("San"); user.setAge(29); user.setBalance(100.51); boolean isSuccessed1 = context.insert(user);//保存到内存 User user2 = new User(); user2.setFirstName("Zhang1"); user2.setLastName("San1"); user2.setAge(29); user2.setBalance(100.51); boolean isSuccessed2 = context.insert(user2);//保存到内存 boolean isSuccessed3 = context.flush();//保存到本地数据库 System.out.println("sSuccessed====>"+isSuccessed1+","+isSuccessed2+","+isSuccessed3); // 查询 OrmPredicates query = context.where(User.class).equalTo("lastName", "San"); List<User> users = context.query(query); System.out.println("users====>"+users); // query = context.where(User.class).equalTo("lastName", "San").and().equalTo("firstName", "Zhang"); users = context.query(query); System.out.println("users====>"+users); ResultSet res = context.query(query, new String[]{"userId", "lastName","firstName"}); System.out.println("users====>"+ Arrays.toString(res.getAllColumnNames())); //修改 先查后改 OrmPredicates predicates = context.where(User.class).equalTo("firstName", "Zhang"); List<User> u1 = context.query(predicates); User u1r1 = u1.get(0); u1r1.setFirstName("Li"); context.update(u1r1); context.flush(); ValuesBucket valuesBucket = new ValuesBucket(); valuesBucket.putString("firstName","haha"); OrmPredicates predicates2 = context.where(User.class).equalTo("lastName", "San"); List<User> u2 = context.query(predicates); context.update(predicates2,valuesBucket); //打印结果 OrmPredicates predicates1 = context.where(User.class).equalTo("age", 29); List<User> u1r11= context.query(predicates1); System.out.println("u1r11====>"+u1r11); //删除 先查后删 OrmPredicates ormPredicates = context.where(User.class).equalTo("lastName", "San"); List<User> query1 = context.query(ormPredicates); User user1 = query1.get(0); context.delete(user1); context.flush(); OrmPredicates ormPredicates1 = context.where(User.class).equalTo("lastName", "San1"); context.delete(ormPredicates1); //打印结果 OrmPredicates predicates4 = context.where(User.class).equalTo("age", 29); List<User> u4= context.query(predicates4); System.out.println("u1r11====>"+u4); } @Override public void onActive() { super.onActive(); } @Override public void onForeground(Intent intent) { super.onForeground(intent); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。