首页 > 其他分享 >Golang杂谈-gorm集成雪花id

Golang杂谈-gorm集成雪花id

时间:2024-08-19 11:04:41浏览次数:9  
标签:fmt gorm Golang json Printf id ID

go get github.com/bwmarrin/snowflake
package main

import (
	"fmt"

	"github.com/bwmarrin/snowflake"
)

func main() {

	// Create a new Node with a Node number of 1
	node, err := snowflake.NewNode(1)
	if err != nil {
		fmt.Println(err)
		return
	}

	// Generate a snowflake ID.
	id := node.Generate()

	// Print out the ID in a few different ways.
	fmt.Printf("Int64  ID: %d\n", id)
	fmt.Printf("String ID: %s\n", id)
	fmt.Printf("Base2  ID: %s\n", id.Base2())
	fmt.Printf("Base64 ID: %s\n", id.Base64())

	// Print out the ID's timestamp
	fmt.Printf("ID Time  : %d\n", id.Time())

	// Print out the ID's node number
	fmt.Printf("ID Node  : %d\n", id.Node())

	// Print out the ID's sequence number
	fmt.Printf("ID Step  : %d\n", id.Step())

  // Generate and print, all in one.
  fmt.Printf("ID       : %d\n", node.Generate().Int64())
}

 

雪花id工具方法

package snowflakeutil

import (
    "coolnews.com/coolnews-service/global"
    "github.com/bwmarrin/snowflake"
)

func GenSnowflakeId() int64 {
    node, err := snowflake.NewNode(1)
    if err != nil {
        global.Logger.Error("生成雪花id失败")
        return 0
    }
    // Generate a snowflake ID.
    id := node.Generate()
    return id.Int64()
}

 

 

 模型中使用 

type CnsAppUser struct {
    models.BaseModel
    Username string `json:"username" gorm:"size:20;unique;not null;comment:用户名"`
    Password string `json:"-" gorm:"size:100;not null;comment:密码"`
    Phone    string `json:"phone" gorm:"size:11;unique;not null;comment:手机号"`
    Avatar   string `json:"avatar" gorm:"size:255;comment:头像" json:"avatar"`
    Desc     string `json:"desc" gorm:"size:50;comment:用户简介"`
}

func (c *CnsAppUser) BeforeCreate(scope *gorm.DB) error {
    c.Id = snowflakeutil.GenSnowflakeId()
    return nil
}

 会遇到一个int64的字符串问题

 

json后加,string即可

标签:fmt,gorm,Golang,json,Printf,id,ID
From: https://www.cnblogs.com/Lastly1999/p/18366919

相关文章

  • 【Abaqus】*Solid Section定义复合材料
    *SOLIDSECTION介绍*solidsection用来定义单元的材料属性,材料方向等信息:solid(continuum)elementsinfiniteelementsacousticfiniteandinfiniteelementsparticleelementstrusselements.Type:Modeldata;Level:Part,Partinstance;Abaqus/CAE:Property......
  • OpenID Connect(OIDC)认证--keycloak与springboot项目的整合
    OpenIDConnect认证–keycloak与springboot项目的整合文章目录OpenIDConnect认证--keycloak与springboot项目的整合前言什么是Keycloak?项目配置1.创建SpringBoot项目2.设置Keycloak服务器3.在Keycloak中创建Realm和Client4.配置SpringB......
  • 秒开WebView?Android性能优化全攻略
    在如今的移动应用时代,用户体验的好坏直接关系到应用的成功与否。而在众多的用户体验因素中,应用的加载速度尤其重要。特别是对于使用 WebView 加载网页的应用,如果加载速度过慢,用户往往会产生不满,从而流失。因此,实现“秒开”WebView成为了开发者必须面对的一项挑战。本文将深......
  • 记 Druid 连接池配置不当引发的服务卡慢宕机问题
    背景单体服务部署到Tomcat之后,运行一段时间,出现系统响应超时的情况。重启服务后正常,一段时间后重新出现。排查查看CPU信息发现正常,打开jvisualvm,发现线程数持续上升,且没有下降趋势,此时初步判断系统在某个地方卡住了,请求进来后处理任务的线程都处于等待状态。在jvisualvm......
  • 从零开始:手把手教你IDEA中搭建RuoYi-Cloud,轻松上手微服务
    RuoYi-Cloud简介RuoYi-Cloud是一个JavaEE企业级快速开发平台,它采用了微服务架构设计,主要技术栈包括SpringBoot、SpringCloud&Alibaba、Vue和ElementUI。同时也是我们学习微服务的首选开源项目。RuoYi-Cloud对于初学者要在IDEA开发工具中搭建并运行起来,着实不容易。......
  • JetBrains DataSpell 2024.2 (macOS, Linux, Windows) - 专业数据科学家的 IDE
    JetBrainsDataSpell2024.2(macOS,Linux,Windows)-专业数据科学家的IDEJetBrains跨平台开发者工具请访问原文链接:https://sysin.org/blog/jetbrains-dataspell/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsDataSpell-专业数据科学家的IDE......
  • 使用TF-IDF进行情感分析的实战指南
    随着自然语言处理(NLP)的迅速发展,情感分析作为其中的重要应用领域,越来越受到关注。无论是社交媒体的舆情分析、用户评论的情感判断,还是企业年报的情感倾向识别,情感分析在多个领域都有广泛的应用。本文将聚焦于如何利用TF-IDF(TermFrequency-InverseDocumentFrequency)技术进......
  • 磁盘RAID详解
    最少需要几块磁盘安全冗余可用容量性能使用场景举例raid01最低所有硬盘容器的和读写最快不要求安全只要求速度数据库从库、存储从库raid1只能有2块100%一半(两块硬盘容器之和)写入速度很慢只追求安全性对于速度没有要求系统盘、监控服务器raid5......
  • SNRS Day 4-2 (IOS IDS)
    iosidstopology:同上技术特点:iosids是一个在线式(in-line)的入侵检测sensor,对于所有穿越router的包,都一一扫描看是否match其中任何一个signature.当发现可疑的行为,可以采取以下的行动:1.alarm:发告警到syslog服务器或ciscosecureidsdirector2.drop:drop掉这个包3......
  • Android usb广播 ACTION_USB_DEVICE_ATTACHED流程源码分析
    整体流程图大概意思就是UsbHostManager启动监控线程,monitorUsbHostBus会调用usb_host_run函数(使用inotify来监听USB设备的插拔)不停的读取bus总线,读取到以后,当1、设备插入:发送广播ACTION_USB_DEVICE_ATTACHED2、设备拔出:发送广播ACTION_USB_DEVICE_DETACHED本篇只分析插入......