代码拉取完成,页面将自动刷新
同步操作将从 OpenHarmony-SIG/dataORM 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
GreenDAO是一个具有一行代码操作数据库或链式调用,备份、升级、缓存等特性的关系映射数据库
npm install @ohos/greenDao --save
OpenHarmony npm环境配置等更多内容,请参考 如何安装OpenHarmony npm包 。
/**
* Entity mapped to table "NOTE".
*/
import {Id} from '@ohos/greendao';
import {NotNull} from '@ohos/greendao';
import {Table,Column as Columns} from '@ohos/greendao';
@Table('NOTE')
export class Note {
@Id()
@Columns('ID', 'number')
id: number;
@NotNull()
@Columns('TEXT', 'string')
text: string;
@Columns('COMMENT', 'string')
comment: string;
@Columns('DATE', 'string')
date: Date;
@Columns('TYPE', 'string')
type: string;
@Columns('MONEYS', 'number')
moneys: number;
//todo 类中必须在constructor中声明所有非静态变量,用于反射生成列
constructor(id?: number, text?: string, comment?: string, date?: Date, types?: string,moneys?:number) {
this.id = id;
this.text = text;
this.comment = comment;
this.date = date;
this.type = types;
this.moneys=moneys;
}
getMoneys(): number {
return this.moneys;
}
setMoneys(moneys: number) {
this.moneys = moneys;
}
getId(): number {
return this.id;
}
setId(id: number) {
this.id = id;
}
getText(): string {
return this.text;
}
/** Not-null value; ensure this value is available before it is saved to the database. */
setText(text: string) {
this.text = text;
}
getComment(): string {
return this.comment;
}
setComment(comment: string) {
this.comment = comment;
}
getDate(): Date {
return this.date;
}
setDate(date: Date) {
this.date = date;
}
getType(): string{
return this.type;
}
setType(types: string) {
this.type = types;
}
}
let context = featureAbility.getContext();
let helper: ExampleOpenHelper = new ExampleOpenHelper(context, "notes-db");
let db: Database = await helper.getWritableDb();
//将所有的表(新增,修改,已存在)加到全局
helper.setEntitys(Note);
//调用创建表方法,将新增表创建,若无新增则不创建表
helper.onCreate_D(db);
this.data.daoSession = new DaoMaster(db).newSession();
private aboutToAppear() {
let that = this;
setTimeout(async function () {
defaultTmp = globalThis.exports.default;
if (defaultTmp != undefined) {
//获取daoSession
daoSess = await defaultTmp.data.daoSession;
//获取dao对象
noteDaos = that.daoSession.getBaseDao(Note);
}
}, 1500);
}
/*
*监听
*/
private tabListener(): OnTableChangedListener<any>{
let that = this;
return {
async onTableChanged(t: any, err, action: TableAction) {
if(err){
console.info('--------操作 err--------'+err);
}else
if (action == TableAction.INSERT) {
await that.updateNotes();
} else if(action == TableAction.UPDATE){
await that.updateNotes();
} else if(action == TableAction.DELETE){
await that.updateNotes();
} else if (action == TableAction.QUERY) {
}
}
}
}
/*
*添加监听
*/
noteDaos.addTableChangedListener(that.tabListener());
/**
* 移除监听
*/
noteDaos.removeTableChangedListener();
//新增
let date = new Date()
let comment = "Added on " + date.toLocaleString();
let note = new Note();
note.setText(this.noteText);
note.setComment(comment);
note.setDate(new Date());
note.setType(NoteType[NoteType.TEXT]);
noteDaos.insert(note);
//查询
let properties: Property[] = BaseDao.generatorProperties(Note);
let notesQuery = that.noteDao.queryBuilder().orderAsc(BaseDao.properties['text']).build();
this.arr = await this.notesQuery.list();
//删除
let properties = defaultTmp.data[Note.name];
let deleteQuery = this.noteDao.queryBuilder().where(properties['text'].eq("bbb"))
.buildDelete();
deleteQuery.executeDeleteWithoutDetachingEntities()
接口准备
app.js
this.data.daoSession = new DaoMaster(db).newSession();
index.js
let defaultTmp = globalThis.exports.default;
let daoSess = await defaultTmp.data.daoSession;
let noteDaos = that.daoSession.getBaseDao(Note)
let queryBuilder: QueryBuilder<Note> = this.noteDao.queryBuilder();
let migration =new Migration(this.dbName, this.tableName, 2).addColumn("AGE", "INTEGER")
noteDao.insert(note)
noteDao.update(note)
noteDao.delete(note)
noteDao.deleteByKey(id)
noteDao.queryBuilder().where(properties['text'].eq("bbb")).buildDelete()
noteDao.queryBuilder().list()
noteDao.queryBuilder.whereOr(BaseDao.properties['text'].eq("aaa"), BaseDao.properties['text'].eq("bbb"), BaseDao.properties['text'].eq("ccc")).list()
noteDao.load(id)
noteDao.refresh(note)
new qury().from(Note).query(Note).then((data) => { if(data)this.arr = data; })
qury().from(Note).eq("ID", 2).querySingle(Note).then((data) => {if(data) this.arr = data; })
noteDao.addTableChangedListener()
noteDao.removeTableChangedListener()
noteDao.save(note)
Migration.backupDB(this.dbName)
migration.execute()
支持 OpenHarmony API version 8 及以上版本。
|---- greendao
| |---- entry # 示例代码文件夹
| |---- greenDao # greenDao库文件夹
| |----annotation # 注解相关
| |----common # 公用类包
| |----database # 数据库相关
| |----dbflow # 链式查询
| |----base # 链式封装
| |----listener # 监听回调
| |----identityscope # 缓存相关
| |----internal # 内部调用文件
| |----query # 查询
| |---- index.ets # 对外接口
| |---- README.MD # 安装使用方法
使用过程中发现任何问题都可以提 Issue 给我们,当然,我们也非常欢迎你给我们发 PR 。
本项目基于 Apache License 2.0 ,请自由地享受和参与开源。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。