/lql

half orm for mysql device

Primary LanguageGo

lql

sql 在我们的开发过程中基本上是绕不过去的一个坎.
lql就是给各位酷爱偷懒的小伙伴带来一个半自动sql拼装工具盒。
欢迎大家一起交流~

安装

go get github.com/luanruisong/lql

初始化

    import (
        "github.com/luanruisong/lql"
    )


    //init db

    dbconfig := lql.Config{
        Host:"127.0.0.1:3306",
        Database:"databaseName",
        UserName:"root",
        Password:"123456",
        MaxConn:10,
        MaxIdleConn:3,
    }

    db := lql.NewDataSource(dbconfig)


    if !db.isConn {
        //TODO err

    }


    //设置日志打印主要是sql等,可以加入自己的logger
    db.SetDebuger(func (msg ...interface{}){
        fmt.Println(msg...)
    })
    //开启sql打印
    db.OpenSqlDebugger()

    //close db connection
    db.Close()

native 使用方式

    rows := db.Query("select id,a from tb_bbb")

    for i,v := range rows{
        fmt.Println(i);
        for i1,v1 := range v{
            fmt.Println(i1,v1)
        }
    }

半ORM 使用方式

    type User struct {
        Id   int    `sql:"id" pk:"1"`
        Name string `sql:"name"`
        Age  int    `sql:"age" order:"1" sort:"desc"`
    }

    //快速查询
    //param 1 :根据name = lihua 查询,

    //返回所有字段
    row := db.QuickFind(User{Name:"lihua"})
    //查询列为 name,age
    row := db.QuickFind(User{Name:"lihua"},"name","age")

    //分页查询
    //param 1 :根据name = lihua 查询,
    //param 2 :每页20条数据
    //param 3 :查询第一页
    //返回所有字段
    row := db.QuickPageFind(User{Name:"lihua"},20,1)
    //查询列为 name,age
    row := db.QuickPageFind(User{Name:"lihua"},20,1,"name","age")

    //快速插入
    //param :指定插入name = lihua 的数据
    res,err := db.QuickInsert(User{Name:"lihua"})

    //快速修改
    //param :修改 id = 1 的数据 name = lihua
    res,err := db.QuickUpdate(User{Name:"lihua",Id:1})


    //新加入  数据结构检测
    //如果表不存在,创建表
    //如果表存在,检测字段做增量更新(不包含字段约束,类型等修改)
    db.QuickCheckTableStruct(User{})

其他介绍

半orm时,表名使用结构体名称进行蛇形命名转换 如:UserInfo => user_info

lql 的tag 使用分以下几种

tag_name description
sql 字段名,指定方式 => sql:"user_id" 不填写按蛇形命名转换
order 排序字段,指定方式 => order:"1"order:"2" 优先级根据tag排序
sort 排序方式,指定方式 => sort:"desc" 单独指定无效
pk 主键声明,指定方式 => pk:"1" 多个pk只采用第一个,慎重填写
dtype 数据库对应类型,指定方式 => dtype:"varchar(20)" 不指定时有默认值
cdesc 数据库字段约束或默认值,指定方式 => cdesc:"NOT NULL" 多个约束时 空格排列即可
unique 唯一键指定 => unique:"1"