sqlex

package module
v0.0.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 23, 2025 License: MIT Imports: 6 Imported by: 0

README

sqlex

简介

sqlex 是一个用于简化 SQL 操作的工具库,是对标准库中database/sql的增强,主要提供两个能力:

  1. SQL语句的拼接
  2. ORM功能

安装

go get cnb.cool/yangtzecoder/sqlex

用法

package main

import (
	"database/sql"
	"fmt"

	"cnb.cool/yangtzecoder/sqlex"
	_ "modernc.org/sqlite"
)

type User struct {
	ID   int
	Name string
	Age  int
}

func main() {
	db, _ := sql.Open("sqlite", ":memory:")
	defer db.Close()

	var id int
	var ids []int

	var user User
	var users []User

	ex := sqlex.Builder().WithDB(db).WithColumnNameMapper(sqlex.CamelCaseToSnakeCaseColumnName).Build()

	ex.ExecRaw("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)")
	ex.ExecRaw("INSERT INTO users (name, age) VALUES (?, ?)", "John", 30)
	ex.ExecRaw("INSERT INTO users (name, age) VALUES (?, ?)", "Jane", 25)

	var sb sqlex.SqlBuilder

	sb = ex.NewSqlBuilder().Append("SELECT id FROM users WHERE name = ?", "John")
	ex.Get(&id, sb)
	fmt.Println("id:", id) // id: 1

	sb = ex.NewSqlBuilder().Append("SELECT id FROM users")
	ex.GetMany(&ids, sb)
	fmt.Println("ids:", ids) // ids: [1 2]

	sb = ex.NewSqlBuilder().Append("SELECT * FROM users WHERE name = ?", "John")
	ex.QueryOne(&user, sb)
	fmt.Println("user:", user) // user: {1 John 30}

	sb = ex.NewSqlBuilder().Append("SELECT * FROM users")
	ex.Query(&users, sb)
	fmt.Println("users:", users) // users: [{1 John 30} {2 Jane 25}]

	sb = ex.NewSqlBuilder().SelectFrom("select * from users").Where("name = ?", "John")
	ex.Query(&users, sb)
	fmt.Println("users:", users) // users: [{1 John 30}]

	sb = ex.NewSqlBuilder().SelectFrom("select * from users").Where("name = ?", "John").Where("age = ?", 30)
	ex.Query(&users, sb)
	fmt.Println("users:", users) // users: [{1 John 30}]

	sb = ex.NewSqlBuilder().SelectFrom("select * from users").Where("name = ?", "John").WhereOr("name = ?", "Jane")
	ex.Query(&users, sb)
	fmt.Println("users:", users) // users: [{1 John 30} {2 Jane 25}]

	sb = ex.NewSqlBuilder().SelectFrom("select * from users").WhereIn("id", 1, 2)
	ex.Query(&users, sb)
	fmt.Println("users:", users) // users: [{1 John 30} {2 Jane 25}]

	sb = ex.NewSqlBuilder().SelectFrom("select * from users").WhereNotIn("id", []int{2, 3})
	ex.Query(&users, sb)
	fmt.Println("users:", users) // users: [{1 John 30}]

	sb = ex.NewSqlBuilder().SelectFrom("select * from users").Where("id in").In(1, 2)
	ex.Query(&users, sb)
	fmt.Println("users:", users) // users: [{1 John 30} {2 Jane 25}]

	sb = ex.NewSqlBuilder().SelectFrom("select * from users").Where("id in").In([]int{1, 2})
	ex.Query(&users, sb)
	fmt.Println("users:", users) // users: [{1 John 30} {2 Jane 25}]

	sb = ex.NewSqlBuilder().SelectFrom("select * from users").Where("id not in").In(2, 3)
	ex.Query(&users, sb)
	fmt.Println("users:", users) // users: [{1 John 30}]
}

版权声明

本项目基于 MIT 协议开源。

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrSQLBuilderNil       = errors.New("sqlex: sql builder is nil")
	ErrTargetNil           = errors.New("sqlex: target is nil")
	ErrTargetMustBePointer = errors.New("sqlex: target must be a pointer")
	ErrTargetMustBeSlice   = errors.New("sqlex: target must be a slice")
	ErrTargetMustBeStruct  = errors.New("sqlex: target must be a struct")
	ErrDBConnectionNil     = errors.New("sqlex: database connection is nil")
)
View Source
var (
	ErrNoTransactionToCommit   = errors.New("sqlex: no transaction to commit")
	ErrNoTransactionToRollback = errors.New("sqlex: no transaction to rollback")
)
View Source
var DefaultColumnNameMapper = OriginalColumnName

Functions

func Builder added in v0.0.6

func Builder() *sqlExContextBuilder

func CamelCaseToSnakeCaseColumnName

func CamelCaseToSnakeCaseColumnName(s string) string

func OriginalColumnName

func OriginalColumnName(s string) string

Types

type SqlBuilder

type SqlBuilder = *sqlBuilder

func (SqlBuilder) Append

func (sb SqlBuilder) Append(sql string, args ...any) SqlBuilder

func (SqlBuilder) Build

func (sb SqlBuilder) Build() (string, []any)

func (SqlBuilder) In

func (sb SqlBuilder) In(args ...any) SqlBuilder

func (SqlBuilder) SelectFrom

func (sb SqlBuilder) SelectFrom(sql string) SqlBuilder

func (SqlBuilder) SetParams

func (sb SqlBuilder) SetParams(params ...any) error

func (SqlBuilder) Where

func (sb SqlBuilder) Where(condition string, args ...any) SqlBuilder

func (SqlBuilder) WhereIn added in v0.0.4

func (sb SqlBuilder) WhereIn(sql string, args ...any) SqlBuilder

func (SqlBuilder) WhereNotIn added in v0.0.4

func (sb SqlBuilder) WhereNotIn(sql string, args ...any) SqlBuilder

func (SqlBuilder) WhereOr

func (sb SqlBuilder) WhereOr(condition string, args ...any) SqlBuilder

func (SqlBuilder) WhereOrIn added in v0.0.4

func (sb SqlBuilder) WhereOrIn(sql string, args ...any) SqlBuilder

func (SqlBuilder) WhereOrNotIn added in v0.0.4

func (sb SqlBuilder) WhereOrNotIn(sql string, args ...any) SqlBuilder

type SqlExContext

type SqlExContext = *sqlExContext

func New added in v0.0.6

func New(db *sql.DB) SqlExContext

func (SqlExContext) Begin added in v0.0.6

func (ex SqlExContext) Begin() (SqlExContext, error)

func (SqlExContext) Commit

func (ex SqlExContext) Commit() error

func (SqlExContext) Exec

func (ex SqlExContext) Exec(sb SqlBuilder) (sql.Result, error)

func (SqlExContext) ExecRaw

func (ex SqlExContext) ExecRaw(sqlStr string, params ...any) (sql.Result, error)

func (SqlExContext) Get added in v0.0.8

func (ex SqlExContext) Get(target any, sb SqlBuilder) error

func (SqlExContext) GetMany added in v0.0.8

func (ex SqlExContext) GetMany(target any, sb SqlBuilder) error

func (SqlExContext) GetManyRaw added in v0.0.8

func (ex SqlExContext) GetManyRaw(target any, sqlStr string, params ...any) error

func (SqlExContext) GetRaw added in v0.0.8

func (ex SqlExContext) GetRaw(target any, sqlStr string, params ...any) error

func (SqlExContext) NewSqlBuilder

func (ex SqlExContext) NewSqlBuilder() SqlBuilder

func (SqlExContext) Query

func (ex SqlExContext) Query(target any, sb SqlBuilder) error

func (SqlExContext) QueryOne added in v0.0.8

func (ex SqlExContext) QueryOne(target any, sb SqlBuilder) error

func (SqlExContext) QueryOneRaw added in v0.0.8

func (ex SqlExContext) QueryOneRaw(target any, sqlStr string, params ...any) error

func (SqlExContext) QueryRaw

func (ex SqlExContext) QueryRaw(target any, sqlStr string, params ...any) error

func (SqlExContext) Rollback

func (ex SqlExContext) Rollback() error

func (SqlExContext) ScanRows added in v0.0.8

func (ex SqlExContext) ScanRows(target any, rows *sql.Rows) error

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳