【b-sql-runner】(可能)让你写查询代码比写SQL更爽!
发布于 6 年前 作者 bingooh 2431 次浏览 来自 分享

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爽

@JavaHello b-sql-runner还支持以下功能(不清楚JOOQ是否支持):

  1. 提供returning(),在执行增删改前/后,执行1条查询取出受影响的记录
  2. 提供Repository类,包含常用的CRUD方法
  3. 支持动态SQL,支持直接传入1个json对象以添加多个查询条件(knex支持)
回到顶部