All Projects → smartwalle → dbs

smartwalle / dbs

Licence: MIT license
SQL Builder 工具,给爱拼 SQL 的你。

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to dbs

swift-declarative-configuration
Declarative configuration for your objects
Stars: ✭ 46 (-2.13%)
Mutual labels:  builder
gogen
Command-line tool to generate GO applications and libraries
Stars: ✭ 17 (-63.83%)
Mutual labels:  builder
ngx-aws-deploy
☁️🚀 Deploy your Angular app to Amazon S3 directly from the Angular CLI 🚀☁️
Stars: ✭ 84 (+78.72%)
Mutual labels:  builder
builder
🍉 Build scenes for Decentraland
Stars: ✭ 141 (+200%)
Mutual labels:  builder
fliphub
the easiest app builder
Stars: ✭ 30 (-36.17%)
Mutual labels:  builder
indexeddb-orm
Indexed DB ORM
Stars: ✭ 53 (+12.77%)
Mutual labels:  builder
spec-pattern
Specification design pattern for JavaScript and TypeScript with bonus classes
Stars: ✭ 43 (-8.51%)
Mutual labels:  builder
Uix-Page-Builder
Uix Page Builder is a design system that it is simple content creation interface.
Stars: ✭ 20 (-57.45%)
Mutual labels:  builder
lombok-rs
Lombok port for Rust
Stars: ✭ 31 (-34.04%)
Mutual labels:  builder
ChromeAppBuilder
Chrome app builder is an editor extension for Unity to export games as google chrome apps.
Stars: ✭ 23 (-51.06%)
Mutual labels:  builder
SwiftBuilder
SwiftBuilder is a fast way to assign new value to the property of the object.
Stars: ✭ 26 (-44.68%)
Mutual labels:  builder
PrimeAdapter
PrimeAdapter makes working with RecyclerView easier.
Stars: ✭ 54 (+14.89%)
Mutual labels:  builder
docker-bakery
Dockerfile hierarchy management tool with automatic rebuilding of dependent images when parent changes
Stars: ✭ 30 (-36.17%)
Mutual labels:  builder
maestro
Faster CI/CD for multi-artifact projects
Stars: ✭ 13 (-72.34%)
Mutual labels:  builder
now-custom-runtime
ZEIT Now v2.0 builder for custom AWS Lambda runtimes
Stars: ✭ 21 (-55.32%)
Mutual labels:  builder
smaller-sites
Smaller Sites is a small BUT Powerful, free and easy to use drag and drop builder for blogs, websites or e-commerce stores. Designed for everyone Developers and non Developers. You can use it to design your next website. The goal is to create something like webflow
Stars: ✭ 27 (-42.55%)
Mutual labels:  builder
tailwindcss-dash-docset
TailwindCSS Dash Docset, built with the Dash Docset Builder in PHP. We needed it. 🌈️
Stars: ✭ 37 (-21.28%)
Mutual labels:  builder
dauntless-builder
Create and share Dauntless builds with your friends!
Stars: ✭ 50 (+6.38%)
Mutual labels:  builder
SilentETHMiner
A Silent (Hidden) Ethereum (ETH & ETC) Miner Builder
Stars: ✭ 219 (+365.96%)
Mutual labels:  builder
SilentCryptoMiner
A Silent (Hidden) Free Crypto Miner Builder - Supports ETH, ETC, XMR and many more.
Stars: ✭ 547 (+1063.83%)
Mutual labels:  builder

DBS

SQL Builder 工具, 不是 ORM。

帮助

在集成的过程中有遇到问题,欢迎加 QQ 群 564704807 讨论。

安装

$ go get github.com/smartwalle/dbs

开始

package main

import (
	"fmt"
	"github.com/smartwalle/dbs"
)

func main() {
	var sb = dbs.NewSelectBuilder()
	sb.Selects("u.id", "u.name", "u.age")
	sb.From("user", "AS u")
	sb.Where("u.id = ?", 1)
	sb.Limit(1)

	sqlStr, args, _ := sb.SQL()
	fmt.Println("sqlStr:", sqlStr)
	fmt.Println("args:", args)
}

上述代码会输出如下内容:

sql: SELECT u.id, u.name, u.age FROM user AS u WHERE u.id = ? LIMIT ?
args: [10 1]

执行 SQL

此处使用 MySQL 作为演示,需要准备好一个测试用数据库及 user 表,user 表结构如下:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `human_id_uindex` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8
package main

import (
	"database/sql"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"github.com/smartwalle/dbs"
)

func main() {
	var sb = dbs.NewSelectBuilder()
	sb.Selects("u.id", "u.name", "u.age")
	sb.From("user", "AS u")
	sb.Where("u.id = ?", 1)
	sb.Limit(1)

	db, err := sql.Open("mysql", "数据库连接信息")
	if err != nil {
		fmt.Println("连接数据库出错:", err)
		return
	}
	defer db.Close()

	var user *User
	if err := sb.Scan(db, &user); err != nil {
		fmt.Println("Query 出错:", err)
		return
	}

	if user != nil {
		fmt.Println(user.Id, user.Name, user.Age)
	}
}

type User struct {
	Id   int64  `sql:"id"`
	Name string `sql:"name"`
	Age  int    `sql:"age"`
}

运行上述代码,如果数据库中存在 id 为 1 的数据,则会正常输出相关的信息。

Select

var sb = dbs.NewSelectBuilder()
sb.Selects("u.id", "u.name AS username", "u.age")
sb.Select(dbs.Alias("b.amount", "user_amount"))
sb.From("user", "AS u")
sb.LeftJoin("bank", "AS b ON b.user_id = u.id")
sb.Where("u.id = ?", 1)
fmt.Println(sb.SQL())

执行 Select 语句:

db, err := sql.Open("mysql", "数据库连接信息")
var user *User
sb.Scan(db, &user)

Insert

var ib = dbs.NewInsertBuilder()
ib.Table("user")
ib.Columns("name", "age")
ib.Values("用户1", 18)
ib.Values("用户2", 20)
fmt.Println(ib.SQL())

执行 Insert 语句:

db, err := sql.Open("mysql", "数据库连接信息")
ib.Exec(db)

Update

var ub = dbs.NewUpdateBuilder()
ub.Table("user")
ub.SET("name", "新的名字")
ub.Where("id = ? ", 1)
ub.Limit(1)
fmt.Println(ub.SQL())

执行 Update 语句:

db, err := sql.Open("mysql", "数据库连接信息")
ub.Exec(db)

Delete

var rb = dbs.NewDeleteBuilder()
rb.Table("user")
rb.Where("id = ?", 1)
rb.Limit(1)
fmt.Println(rb.SQL())

执行 Delete 语句:

db, err := sql.Open("mysql", "数据库连接信息")
rb.Exec(db)

更多内容请参考 test 文件。

License

This project is licensed under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].