2.0.4 • Published 2 years ago
wink-dao v2.0.4
📚 各版本文档
👇 安装依赖
npm install --save wink-dao
pnpm add --save wink-dao
📖 示例代码
import { useDao, useOrm, AutoTablePolicies, ColumnType, AutoIncrementEntity, ExecResult } from 'wink-dao';
// DAO基础操作库
const dao = useDao({
config: {
host: '',
port: 0,
user: '',
password: '',
datebase: '',
},
});
const { exec, get, select, insert, update, remove, revoke } = dao;
// 使用ORM框架
const { registRepository } = useOrm(dao, {
// 开启自动托管数据表后会自动创建表,表名会自动增加前缀t_,并将表名和字段名的驼峰命名转为下划线
// TODO 自动同步更新表结构暂未实现
autoTablePolicy: AutoTablePolicies.CREATE,
});
// 定义Menu模型,推荐使用自增主键
class Menu extends AutoIncrementEntity {
name?: string;
code?: string;
sort?: number;
isDirectory?: boolean;
constructor(data?: Partial<Menu>) {
super();
Object.assign(this, data);
}
}
// 配置Menu仓库
const repository = registRepository({
name: 'menu',
columnDefiens: [
{
name: 'name',
type: ColumnType.STRING,
length: 20,
required: true,
},
{
name: 'code',
type: ColumnType.STRING,
length: 20,
required: true,
primary: true,
unique: true,
},
{
name: 'sort',
type: ColumnType.INT,
required: true,
defaultValue: '0',
},
{
name: 'isDirectory',
type: ColumnType.BOOLEAN,
required: true,
defaultValue: 'false',
},
],
});
// 实际应该在项目启动时初始化
await repository.init.run();
// 插入数据
const id = await repository.create(new Menu({ code: 'test', name: '测试' }));
// 主键查询
const menu = await repository.get<Menu>(id);
// 更新数据
menu.sort = 10;
let isSuccess: boolean = await repository.update(menu);
// 条件查询
const list: Menu[] = await repository.select<Menu>({ code: 'test' });
// 逻辑删除
isSuccess = await repository.remove(id);
// 逻辑恢复
isSuccess = await repository.revoke(id);
// 自定义查询
const menus: Menu[] = await repository.exec<Menu[]>('select * from t_menu where sort > ?', [0]);
// 自定义操作
const result: ExecResult = await repository.exec('delete from menu where id = ?', [id]);
// result.affectedRows === 1
😉 TODO
- 【feat-orm】新增
ORM
框架 - 【feat-relaction】处理关联关系(很复杂)
- 【refactor-plugin】抽离
Mysql
耦合,改为插件形式 - 【refactor-adapter】支持适配多种数据库
- 【perf-dao】优化
DAO
基础能力 - 【feat-business】封装分页查询等常用业务能力
- 【feat-generate】参考
JPA
实现通过函数名特殊命名规则生成复杂查询 - 【feat-docs】新增
vitepress
文档项目并完善文档 - 【refactor-test】改用
vitest
测试用例完善开发发布流程 - 【feat-update】实现同步更新表结构(尝试了一下比想象中复杂)
- 【chore】寻找伙(da)伴(lao)一起合作
🎯 框架依赖
- mysql MySQL 数据库协议
👤 作者
向文可
- Email: 1041367524@qq.com
- Github: @x-wink
🤝 贡献
欢迎大家随时点击这里为我提供贡献、问题和功能建议
😘 感谢支持
如果觉得项目对你有帮助,就帮我点个小星星吧~ ⭐️
本文档使用readme-md-generator模板生成