更新记录
1.0.0(2024-12-27)
- 自研uts本地数据库ORM首次发布
平台兼容性
Vue2 | Vue3 |
---|---|
√ | × |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 3.6.8,Android:支持,iOS:不支持,HarmonyNext:不支持 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 | 鸿蒙元服务 |
---|---|---|---|---|
× | × | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
UxORM 1.0.0
基于UTS开发的本地数据库ORM插件
特别说明
本插件不支持授权购买,仅支持源码购买,否则功能无法正常使用!
目前仅支持android,后续版本支持ios
说明
通过链式调用实体对象,零SQL对本地数据库进行增删改查!
- 实体映射
- 类型映射(string, boolean, int, double, float, long, short, blob, timestamp, datetime, json)
- 主键
- 默认值
- 别名
- 运算符( =, !=, >, >=, <. <=, like, not like, in, not in, between, not between, is null, is not null)
- 排序(ASC, DESC)
- 分页
- 表结构自动升级
- 删表
- 删库跑路
- 插入(insert)
- 批量插入(inserts)
- 删(delete)
- 改(update)
- 查(query)
- 行数(count)
- 支持 select
- 支持 groupBy
- 支持 having
- 支持原生sql
- 支持实体数据集
- 支持json数据集
定义表结构
import { Table, TableColumn, Column } from '@/uni_modules/ux-orm'
export class UserColumn extends TableColumn {
readonly id = Column.int('id').primaryKey()
readonly uuid = Column.string('uuid')
readonly nickname = Column.string('nickname').aliased('name')
readonly phone = Column.string('phone')
readonly avatar = Column.blob('avatar')
readonly sex = Column.short('sex').default(1)
readonly age = Column.int('age')
readonly vip = Column.boolean('is_vip').default(false)
readonly extInfo = Column.json('ext_info').default({'city': '北京'})
readonly createAt = Column.datetime('create_at').default(new Date())
readonly updateAt = Column.timestamp('update_at')
public constructor() {
super()
}
}
实体映射
export class UserTable extends Table {
// 覆写表名称
override name = 'tb_user'
// 覆写表结构
override columns: TableColumn = new UserColumn()
// 字段映射
public id ?: number = null
public uuid ?: string = null
public nickname ?: string = null
public phone ?: string = null
public avatar ?: ByteArray = null
public sex ?: number = null
public age ?: number = null
public vip ?: boolean = null
public extInfo ?: UTSJSONObject = null
public createAt ?: Date = null
public updateAt ?: number = null
public constructor() {
super()
}
}
操作数据库之前需先初始化数据库
orm.openDatabase({
database: 'app.db',
success: (res: orm.UxOrmSuccess) => {
uni.showToast({
title: 'open db success',
icon: 'none'
})
}
} as orm.OpenDatabaseOptions)
insert
let user = new UserTable()
user.uuid = '1'
user.nickname = '老6'
user.phone = ''
user.avatar = new ByteArray(1)
user.sex = 1
user.age = 16
user.vip = true
user.extInfo = {
'province': '北京',
'city': '北京'
}
user.updateAt = new Date().getTime()
user.createAt = new Date()
// 返回行id
let id = user.insert()
update
let user = new UserTable()
user.nickname = '老登'
// 返回影响行数
let columns = user.columns as UserColumn
let i = user.where(columns.id.eq(2))
.update()
delete
let user = new UserTable()
// 返回影响行数
let columns = user.columns as UserColumn
let i = user.where(columns.id.eq(2)).delete()
count
let user = new UserTable()
let columns = user.columns as UserColumn
// 返回满足条件的总行数
let count = user.where(columns.age.eq(15))
.count()
query
let user = new UserTable()
let columns = user.columns as UserColumn
// 返回实体数据集
let datas = user.orderBy(columns.id.desc())
.where(columns.nickname.like('老6%'))
.query<UserTable>()
// 返回json数据集
let datas = user.orderBy(columns.id.desc())
.where(columns.age.between(16, 25))
.fromJson()
.query<UTSJSONObject>()
// 先查询后过滤并打印
user.orderBy(columns.id.desc())
.where(columns.nickname.like('老6%'))
.query<UserTable>()
.filter((e): boolean => {
return e.age < 16
})
.forEach(e => {
console.log(e)
})
// 分页查询
let datas = user.orderBy(columns.id.desc())
.where(columns.age.between(16, 25))
.or(columns.nickname.like('老6%'))
.paging(0, 10)
.pagingInfo(pageInfo => {
// 分页信息
console.log(pageInfo);
})
.query<UTSJSONObject>()
// 分组查询
let datas = user.orderBy(columns.id.desc())
.where(columns.age.between(16, 25))
.or(columns.nickname.like('老6%'))
.groupBy(columns.id.getName())
.having(columns.id.gte(2))
.fromJson()
.query<UTSJSONObject>()