Categorygithub.com/BlueStorm001/gsql
repositorypackage
0.6.2
Repository: https://github.com/bluestorm001/gsql.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

gsql

golang SQL ORM

import (
    "fmt"
    "github.com/BlueStorm001/gsql"
    mssql "github.com/denisenkom/go-mssqldb"
    _ "github.com/go-sql-driver/mysql"
)
//使用方式(推荐)
//The first way to use
//MYSQL test
func MySqlConnDrive() (db *sql.DB, err error) {
	connString := "user:pass@tcp(host:3306)/database?charset=utf8"
	db, err = sql.Open("mysql", connString)
	return
}
//更简单的使用sql驱动
//只需要制定的使用的sql类型和驱动即可
//Easier to use sql driver
//gsql.MySql 
//gsql.MSSql
//gsql.Clickhouse
var serve = gsql.NewDrive(gsql.MySql, MySqlConnDrive).Config(100, 60)
type Options struct {
    Id      int    `json:"id,string" sql:"primary key,auto_increment 1000"`
    Text string    `json:",string" sql:"varchar(20) default null"`
    Value   string
}
func main() {
    option := &Options{Id:1,Text:"test"}
    orm := serve.NewStruct("table_options", option)
    //orm.Select("*")... or orm.Select("Id","Text")...
    //orm.Select().Page(20,1).Execute() //分页 pagination
    //orm.Count()...
    //orm.Insert()...
    //orm.Update()...
    //orm.Delete()...
    result := orm.Select().Where("Id=?").OrderBy("id desc").Execute()
    //result
    if result.RowsAffected > 0 {
        fmt.Println("row:", orm.Id, option.Id, result.DataTable.Rows[0]["Id"], orm.TC)
        
        // 在结果集里进行搜索
        // Search in the result set
        dt := result.DataTable
        
        // Where 条件匹配 (a=1 and b=2) or (c=2 and d=3) Condition match
        table := dt.Where("Text='CN' and (code='BJS' or code='SHA')").OrderBy("id") 
        for i, row := range table.Rows {
            fmt.Println(i,row)
        }
        
        // 使用模糊搜索 
        // Use fuzzy search
        table = dt.Like("name='CN%' and money=1.2%").OrderBy("id desc")
        
        // 使用正则表达式 
        // Use regular expressions
        table = dt.Find("code='[A-Z]{3}'").OrderBy("id desc")
        
        // 分组
        // Group
        table = dt.GroupBy("name")
        for i, row := range table.Rows {
            newTable := dt.Where("name='" + row["name"] + "' and (code='BJS' or code='SHA')").OrderBy("id") //[id asc , name desc]...
            fmt.Println(newTable)
        }
        
    } else {
        fmt.Println("row:", orm.Id, option.Id, "no data", orm.TC)
    }
   
}