更新记录
1.0.1(2024-03-14)
修复查询问题
1.0.0(2024-03-14)
无
平台兼容性
Vue2 | Vue3 |
---|---|
× | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
Android:4.4,iOS:不支持,HarmonyNext:不确定 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
rookie-sqlite
使用教程
数据库初始
导入插件 import {init,destroyClear} from '@/uni_modules/rookie-sqlite'
请在 App.uvue 中的 onLaunch 中调用 init 方法初始化数据库,第一个参数是数据库名,第二个参数是数据库表SQL,第三个参数是数据库版本号,升级或者降低版本需要更改当前参数。
数据库初始化只会在数据库不存在时进行初始化。
在 onExit 中调用 destroyClear 清理数据库连接相关。
定义表class
导入 BaseMapper,定义表 class 继承 BaseMapper 就会有相应的增删改查方法。必须实现 getTableName 方法,这个方法定义每个表的表名。
export class Age extends BaseMapper {
constructor() {
super()
}
override getTableName() : string {
return "age"
}
}
CURD 使用
调用相应表的增删改查方法,传入相应的 wrapper,并且 wrapper 可链式调用。条件构造器具体可参考 MyBatis plus
添加数据
import { Age } from '@/model/classify.uts'
import { QueryWrapper,UpdateWrapper } from '@/uni_modules/rookie-sqlite'
let age = new Age()
let temp:UTSJSONObject = {
id:1
}
age.insert(age)
let arr:Array<UTSJSONObject> = []
age.batchInsert(age)
删除数据
let age = new Age()
let query = new QueryWrapper()
query.eq("id",1);
age.delete(query)
修改数据
let age = new Age()
let update = new UpdateWrapper()
update.set("name","哈哈哈").eq("id",1)
let tmp = age.update(update)
查询数据
let age = new Age()
let query = new QueryWrapper()
query.eq("id",1);
let tmp = age.selectOne(query)
或者
let tmp = age.list(query)
数据库生命周期
如果需要获取数据库的打开和升级的回调,请导入 dataBaseLifecycle,然后重写 upgrade 和 open 方法。注意,升级语句必须写在 init 方法调用的前面。
import {init,destroyClear,dataBaseLifecycle} from '@/uni_modules/rookie-sqlite'
dataBaseLifecycle.upgrade = function(){
console.log(222)
}
事务使用
请导入 beginTransaction、endTransaction、setTransactionSuccessful,当事务正常结束,setTransactionSuccessful 标记事务成功,然后 endTransaction 结束事务。如果执行中断,直接结束使用,endTransaction 会将数据回滚。
import { QueryWrapper,UpdateWrapper,beginTransaction,endTransaction,setTransactionSuccessful } from '@/uni_modules/rookie-sqlite'
let age = new Age()
beginTransaction()
try{
age.insert({id:4})
age.insert({id:"fgdfg"})
setTransactionSuccessful()
}finally{
endTransaction()
}