uni-app sqlite封装 orm

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app sqlite封装 orm

sqlite orm 插件

5 回复

这应该在js层面就可以封装


可以做,专业原生插件开发3个月,联系QQ:1804945430

Spatialite uniapp 插件开发 能搞定不?

回复 4***@qq.com: 可以的,麻烦加我QQ,1804945430

在uni-app中封装SQLite ORM(对象关系映射)可以极大地简化数据库操作,提高开发效率。以下是一个简单的SQLite ORM封装示例,该示例展示了如何定义模型、执行基本的CRUD(创建、读取、更新、删除)操作。

首先,确保你的uni-app项目已经安装了@dcloudio/uni-app-plus-sqlite插件。

1. 安装依赖

如果还没有安装,可以在manifest.json中添加依赖:

"mp-weixin": { // 或者其他平台配置
  "usingComponents": true,
  "nativePlugins": [
    {
      "provider": "uni-app-plus-sqlite"
    }
  ]
}

2. 封装SQLite ORM

创建一个db.js文件,用于封装数据库操作:

const db = wx.openDatabase({
  name: 'mydb',
  version: '1.0',
  pageSize: 1024,
});

class Model {
  constructor(tableName) {
    this.tableName = tableName;
  }

  async create(data) {
    const keys = Object.keys(data).join(', ');
    const values = Object.values(data).map(val => `'${val}'`).join(', ');
    const sql = `INSERT INTO ${this.tableName} (${keys}) VALUES (${values})`;
    await db.exec(sql);
  }

  async read(id) {
    const sql = `SELECT * FROM ${this.tableName} WHERE id = ${id}`;
    const res = await db.exec(sql);
    return res[0].rows.length > 0 ? res[0].rows[0].data : null;
  }

  async update(id, data) {
    const sets = Object.keys(data).map(key => `${key} = '${data[key]}'`).join(', ');
    const sql = `UPDATE ${this.tableName} SET ${sets} WHERE id = ${id}`;
    await db.exec(sql);
  }

  async delete(id) {
    const sql = `DELETE FROM ${this.tableName} WHERE id = ${id}`;
    await db.exec(sql);
  }
}

export default Model;

3. 使用ORM

在页面的脚本文件中使用封装的ORM:

import Model from '@/db.js';

const User = new Model('user');

async function testCreate() {
  await User.create({ id: 1, name: 'John Doe' });
}

async function testRead() {
  const user = await User.read(1);
  console.log(user);
}

async function testUpdate() {
  await User.update(1, { name: 'Jane Doe' });
}

async function testDelete() {
  await User.delete(1);
}

// 调用示例
testCreate().then(testRead).then(testUpdate).then(testDelete);

以上代码展示了如何在uni-app中封装并使用SQLite ORM。注意,实际应用中可能需要处理更多的边缘情况,比如SQL注入防护、异步错误处理等。这个示例提供了一个基本的框架,你可以根据需求进行扩展和优化。

回到顶部