【b-sql-runner】(可能)让你写查询代码比写SQL更爽!
b-sql-runner是一款简单的sql query builder
,追求以最接近写SQL的方式来完成对数据的操作
这是本人首个开源作品,可能是重复造了1个轮子。不管怎样希望能对大家有用,如果好请Star!
目前库还不成熟,日志,错误处理,单元测试等不完善或没有,欢迎有兴趣的PR
以下是简单示例,详细文档见项目
Example
let sqlRunner=getConnection().sqlRunner();
let users=await sqlRunner
.select("oid,group")
.field(b.sum('score').as('scores'))
.from('t_user')
.where(b.eq('status','enable'))
.and(b.isnotnull('mobile'))
.groupBy('group')
.having(b.gte('scores',100))
.orderBy(b.asc('gid,creationDate'))
.limit(10)
.findMany();
//update `t_user` set `score` = `score` + 10, `age` = `age` - 10, `nickname` = `name`
let UserRepository=getRepository({name:'t_user',pk:'oid'});
let affected=await UserRepository
.update()
.incr('score',10)
.decr('age',10)
.replace('nickname','name')
.run();
let users=[{name:'n1'},{name:'n2'}];
let affectedUsers=await UserRepository
.insert(users)
.returning("*",b.expr(b.idIn(users,'name')))
.run();
6 回复
看起来远没有sql爽
[CNodeMD]
这个orm有点像laravel的风格。
来自酷炫的 CNodeMD
@zy445566 没有用过laravel,简单看了下差别还是蛮大的
最开始写node业务用的mongodb,后来用MySQL,ORM 用的sequelize,后来感觉还是直接写SQL爽
js版JOOQ?
@JavaHello b-sql-runner还支持以下功能(不清楚JOOQ是否支持):
- 提供returning(),在执行增删改前/后,执行1条查询取出受影响的记录
- 提供Repository类,包含常用的CRUD方法
- 支持动态SQL,支持直接传入1个json对象以添加多个查询条件(knex支持)