• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

slimmysql: go语言mysql工具类 摈弃orm github地址https://github.com/jesusslim/slim ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

slimmysql

开源软件地址:

https://gitee.com/JesusSlim/slimmysql

开源软件介绍:

slimmysql

a nice tool for mysql query

go语言下的mysql工具类 摈弃了ORM

contact me:[email protected]

github地址:https://github.com/jesusslim/slimmysql

使用:

完整例子full example:

Slimgotest

Init(reg connections)

conf, _ := goconfig.LoadConfigFile("./conf/db.ini")conf_sq := "local"slimmysql.RegisterConnectionDefault(conf.MustBool(conf_sq, "rwseparate"), conf.MustValue(conf_sq, "host"), conf.MustValue(conf_sq, "port"), conf.MustValue(conf_sq, "db"), conf.MustValue(conf_sq, "user"), conf.MustValue(conf_sq, "pass"), conf.MustValue(conf_sq, "prefix"), false)

the conf shoud be like this:

配置文件参考

[local]rwseparate = trueuser = rootpass = roothost = 127.0.0.1,127.0.0.1,127.0.0.1port = 3307db = testgo,testgo2,testgo3prefix = go_

Multi hosts means read/write separate,use the first host as master for write,others for read.

多个host表示主从读写分离 第一个地址为主库 其他为从库

Then get a Instance when you want to use it.

使用时使用该方法获取一个实例

slimsql, err := slimmysql.NewSqlInstanceDefault()

查询 condition

采用map[string]interface{}作为查询条件传入map的key代表字段 value代表指like/>/</between等等都在字段名称后面加上__like等例如 nickname like : key=nickname__like

默认为=like:__like>:__gt>=:__egt<:__lt<=:__elt!=:__neqbetween:__betweenin:__innotin:__notinisnull:__isnullisnotnull:__isnotnull

key=relation表示and、or等 默认为and如果需嵌套condition 则key="__" value=map[string]interfcae{}

例子:

	condition := map[string]interface{}{	"relation":       "or",	"nickname__like": "Jesus",	"_": map[string]interface{}{		"id__gt": 10385,		"_": map[string]interface{}{			"relation": "or",			"_": map[string]interface{}{				"status":    1,				"acoin__gt": 200,			},			"type": 2,		},		"create_time__between": "1431619200|1433088000",	},	"id__egt": 10575,}stds, err := slimsql.Table("students").Where(condition).Page(1, 10).Order("id desc").Fields("id,nickname,nickname_cn,acoin,mobile").Select()//mysql:Select: SELECT id,nickname,nickname_cn,acoin,mobile FROM `pre_students`  WHERE  ( id > 10385  AND ( ( status = '1'  AND acoin > 200 ) OR type = '2' ) AND  ( create_time >= 1431619200 AND create_time <= 1433088000 ) ) OR id >= 10575  OR nickname LIKE '%Jesus%'  ORDER BY id desc  LIMIT 0,10

函数:

wheregrouphavingorderpagepk 设置主键join :slimsql.Table("A").join("left join B on A.id = B.aid")countfind 查询单个 返回一个mapselect 返回一个map数组getField 与select类似 返回一个value为map的map 以getfield中第一个字段作为keysetinc 增长save updateadd insertdelete

事务支持

starttranscommitrollback

锁表等

LockUnlockLockRow(forupdate)ping 测试连接状态clear 清除slimmysql.Sql对象中的值(不清楚的情况下可重复使用 例如select之后 直接调用count可获得数量 而不需要重新传入condition等)

具体可参考gowalker:https://gowalker.org/github.com/jesusslim/slimmysql


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap