1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
官方文档
1 | https://github.com/OpenTSDB/opentsdb/wiki/Installation-on-Cloudera-Virtual-Machine |
opentsdb的安装依赖Hbase,本文中使用的是CDH5.16.2中的Hbase 1.2.0+cdh5.16.2
1.git clone
1 | git clone https://github.com/OpenTSDB/opentsdb.git |
2.安装
1 | cd opentsdb |
如果Hbase启用了kerberos,则需要先认证
1 | kinit -kt ~/下载/hbase.keytab hbase/master@HADOOP.COM |
上面的脚本会在hbase中初始化4张table
引用jQuery库文件的
gen是gorm官方推出的一个GORM代码生成工具
官方文档:https://gorm.io/zh_CN/gen/
安装gorm gen
1 | go get -u gorm.io/gen |
假设有如下用户表
1 | CREATE TABLE user |
在cmd目录下创建gen/generate.go文件
1 | package main |
运行generate.go,将会生成model和dao文件
需要注意mysql的tinyint(1)生成的时候会映射成bool,但是tinyint(1)的实际范围为-128~127,这可能会有些问题;而tinyint(4)生成的时候会映射成int32
1 | func init() { |
1 | func Test_userDo_Delete(t *testing.T) { |
1 | func Test_userDo_Update(t *testing.T) { |
1 | func Test_userDo_Scan(t *testing.T) { |
参考:GORM Gen使用指南
在上面例子中使用scan获得查询结果的时候,字段的个数是固定的,如果当字段的个数是不定长度的时候,可以使用gorm来处理可变结果集
可以将**[]interface{}或者[]orm.Params**来保存查询结果,参考:Golang开发实践:把数据库数据保存到map[string]interface{}中 或者【巧妙】GO + MySQL的通用查询方法
1 | func (repo *userRepo) ListUsers(ctx context.Context) (*model.User, error) { |
输出结果
1 | key=>id,type=>uint8[],value=>5 key=>username,type=>uint8[],value=>test key=>email,type=>uint8[],value=>test@test |
可以使用gorm的scopes来实现分页(先count再分页),参考:Gorm Scopes复用你的逻辑 和 学习gorm系列十之:使用gorm.Scopes函数复用你的查询逻辑
1 | func Paginate(pageNum int, pageSize int) func(db *gorm.DB) *gorm.DB { |
测试分页函数
1 | func Test_userRepo_ListUsers(t *testing.T) { |
输出
1 | &{5 test test@test} |
Mybatis Page Helper分页插件原理:Mybatis分页插件PageHelper的配置和使用方法
gorm还支持编写sql模板,来添加自定义sql的函数逻辑,其中使用的语法是text template,可以参考: