更新记录

1.1.0(2025-11-03) 下载此版本

✨ 新增功能 新增表结构缓存机制,提升字段查询性能 新增字段验证函数,防止 SQL 注入攻击 新增快速操作方法,支持跳过字段校验提升性能 新增事务支持,包括开始、提交、回滚和自动事务执行 新增灵活的字段过滤机制,支持手动指定字段列表 新增函数别名系统,保持向后兼容

1.0.0(2021-08-22) 下载此版本

增删改查,批量添加书库,批量修改数据,分页查询等

由于项目中要用pda离线扫描,于是使用了sqlite存储数据。模板中,数据库名称,写在了database.js文件中,使用方便(偷懒,不用再传数据库名称了)

方法全部返回promise,记得使用 await

基于sqlite建表+添加数据组件修改,感谢原作者


平台兼容性

uni-app(4.0)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× × × × - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × ×

数据操作 - fields 参数使用指南

📋 概述

非快速数据操作函数支持可选的 fields 数组参数,用于灵活控制操作字段。

核心优势:

  • 灵活控制字段 - 精确指定需要操作的字段
  • 批量操作性能提升 - 批量插入时指定少量字段可显著提升性能
  • 向后兼容 - 不提供 fields 时自动过滤表字段

🎯 函数分类

常用操作函数(支持 fields 参数)

  • insertData(tableName, data, fields) - 插入单条数据
  • insertBatch(tableName, dataList, fields) - 批量插入
  • updateData(tableName, setData, whereObj, fields) - 更新单条数据
  • updateBatch(tableName, dataList, primaryKey, fields) - 批量更新

快速函数(极致性能)

  • insertDataFast(tableName, data) - 无额外逻辑,最快速度
  • insertBatchFast(tableName, dataList) - 无额外逻辑,最快速度
  • updateDataFast(tableName, setData, whereObj) - 无额外逻辑,最快速度
  • updateBatchFast(tableName, dataList, primaryKey) - 无额外逻辑,最快速度

🚀 性能说明

方案 字段控制 性能 使用场景
常用操作函数 ✅ 自动 ⭐⭐⭐⭐ 自动过滤字段,安全优先,推荐使用
常用操作函数 + fields ✅ 灵活 ⭐⭐⭐⭐ 灵活控制字段,批量操作推荐
快速函数 ❌ 无 ⭐⭐⭐⭐⭐ 追求极致性能

性能提升场景:

  • 批量插入指定少量字段 - SQL 语句更简洁,性能明显提升
  • 使用快速函数 - 无额外逻辑,极致性能

注意: 表结构已缓存,fields 参数的主要价值是灵活性和批量操作时的性能优化,而非单次操作的性能提升。


💡 使用示例

1. insertData - 插入单条数据

import { insertData, insertDataFast } from "@/utils/database.js";

const data = {
  id: "001",
  name: "张三",
  age: 25,
  email: "zhangsan@example.com",
};

// 指定字段插入
await insertData("user", data, ["id", "name", "email"]);

// 自动过滤字段
await insertData("user", data);

// 快速函数(极致性能)
await insertDataFast("user", data);

2. insertBatch - 批量插入

import { insertBatch, insertBatchFast } from "@/utils/database.js";

const dataList = [
  { id: "001", name: "张三", age: 25 },
  { id: "002", name: "李四", age: 30 },
];

// 批量插入指定字段(性能优化,推荐)
await insertBatch("user", dataList, ["id", "name"]);

// 快速函数(极致性能)
await insertBatchFast("user", dataList);

3. updateData - 更新单条数据

import { updateData, updateDataFast } from "@/utils/database.js";

const setData = { name: "张三(新)", age: 26 };

// 指定字段更新
await updateData("user", setData, { id: "001" }, ["name", "age"]);

// 快速函数(极致性能)
await updateDataFast("user", setData, { id: "001" });

4. updateBatch - 批量更新

import { updateBatch } from "@/utils/database.js";

const dataList = [
  { id: "001", status: "active" },
  { id: "002", status: "inactive" },
];

// 批量更新指定字段
await updateBatch("user", dataList, "id", ["status"]);

🎭 实际应用场景

场景 1:批量数据导入(性能优化)

// 从 API 获取大量数据
const userList = await fetch("/api/users").then((r) => r.json());

// 只插入必要字段,SQL 语句更简洁(批量操作时性能提升明显)
await insertBatch("user", userList, ["id", "name", "email"]);

// 或使用快速函数(极致性能)
await insertBatchFast("user", userList);

场景 2:批量状态更新

const users = [
  { id: "001", status: "active" },
  { id: "002", status: "inactive" },
];

// 只更新 status 字段
await updateBatch("user", users, "id", ["status"]);

场景 3:灵活控制字段

const formData = {
  id: "001",
  name: "张三",
  email: "test@example.com",
  temp_field: "临时数据", // 不需要保存的字段
};

// 只保存需要的字段
await insertData("user", formData, ["id", "name", "email"]);

⚡ 性能优化要点

批量插入指定少量字段

const dataList = [...]; // 1000 条数据

// 假设数据有 20 个字段,但只需要插入 3 个字段
await insertBatch("user", dataList, ["id", "name", "status"]);
// SQL 更简洁:INSERT INTO user (id, name, status) VALUES (...), (...), (...)
// 性能提升明显 ✅

// 如果插入所有字段
await insertBatch("user", dataList);
// SQL 较长:INSERT INTO user (field1, field2, ..., field20) VALUES (...), (...), (...)

使用快速函数

// 快速函数:无额外逻辑,极致性能
await insertDataFast("user", data);
await insertBatchFast("user", dataList);
await updateDataFast("user", setData, { id: "001" });

性能优化场景:

  • 批量操作 + 少量字段 - 性能提升最明显
  • 使用快速函数 - 无额外逻辑,极致性能

📊 函数选择建议

场景 推荐方案 说明
自动过滤字段 常用操作函数(不传 fields) 自动过滤表字段
灵活控制字段 常用操作函数 + fields 精确控制操作字段
批量 + 少量字段 常用操作函数 + fields 性能优化,推荐
极致性能 快速函数 无额外逻辑,最快速度

📝 完整示例

import {
  insertData,
  insertBatch,
  updateData,
  updateBatch,
  insertDataFast,
  insertBatchFast,
  updateDataFast,
} from "@/utils/database.js";

// 用户注册
async function registerUser(userData) {
  await insertData("user", userData, ["id", "username", "email", "password"]);
}

// 批量导入(性能优化)
async function importUsers(userList) {
  await insertBatch("user", userList, ["id", "username", "email"]);
}

// 批量更新状态
async function batchUpdateStatus(dataList) {
  await updateBatch("user", dataList, "id", ["status"]);
}

// 极致性能
async function fastInsert(data) {
  await insertDataFast("user", data);
}

⚠️ 注意事项

1. fields 参数

  • 传递非空数组:使用指定字段
  • 不传或传 null/[]:自动过滤表字段
  • 所有字段名都会进行安全性验证

2. 快速函数

  • 无额外逻辑,极致性能
  • 字段必须与表结构匹配
  • 字段不匹配会导致 SQL 错误

3. updateBatch 主键处理

// fields 中的主键会被自动过滤
await updateBatch("user", dataList, "id", ["id", "name", "status"]);
// 实际只更新 name 和 status,id 作为 WHERE 条件

🎉 总结

使用建议

  1. 追求极致性能 → 使用快速函数

    • 无额外逻辑,最快速度
    • 字段必须匹配表结构
  2. 批量操作 + 少量字段 → 常用操作函数 + fields

    • SQL 语句简洁,性能优化明显
    • 灵活控制操作字段
  3. 自动过滤字段 → 常用操作函数(不传 fields)

    • 自动过滤表字段
    • 适合不确定表结构的场景

最佳实践

// 批量操作性能优化
await insertBatch("user", dataList, ["id", "name", "email"]);

// 灵活控制字段
await insertData("user", data, ["id", "name"]);

// 极致性能
await insertDataFast("user", data);

// 自动过滤字段
await insertData("user", data);

隐私、权限声明

1. 本插件需要申请的系统权限列表:

SQLite(数据库)

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议