更新记录
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 条件
🎉 总结
使用建议
-
追求极致性能 → 使用快速函数
- 无额外逻辑,最快速度
- 字段必须匹配表结构
-
批量操作 + 少量字段 → 常用操作函数 + fields
- SQL 语句简洁,性能优化明显
- 灵活控制操作字段
-
自动过滤字段 → 常用操作函数(不传 fields)
- 自动过滤表字段
- 适合不确定表结构的场景
最佳实践
// 批量操作性能优化
await insertBatch("user", dataList, ["id", "name", "email"]);
// 灵活控制字段
await insertData("user", data, ["id", "name"]);
// 极致性能
await insertDataFast("user", data);
// 自动过滤字段
await insertData("user", data);

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(1)
下载 1072
赞赏 1
下载 11248231
赞赏 1810
赞赏
京公网安备:11010802035340号