package main

import (
"encoding/json"
"fmt"
"github.com/jinzhu/gorm"
"github.com/pborman/uuid"
"os"
"reflect"
"strings"

_ "github.com/mattn/go-sqlite3"
)

type User struct {
Id string `gorm:"primary_key;uuid"`
Age int64
Name string `sql:"size:255"`
UserPhone string `gorm:"column(user_phone); size(32)"`
UserQQ string `gorm:"column(user_qq); size(32);"`
UserCity string `gorm:"column(user_city); size(32)"`
}

// create UUID
func beforeCreate(scope *gorm.Scope) {
reflectValue := reflect.Indirect(reflect.ValueOf(scope.Value))
if strings.Contains(string(reflectValue.Type().Field(0).Tag), "uuid") {
uuid.SetClockSequence(-1)
scope.SetColumn("id", uuid.NewUUID().String())
}
}

func main() {
err := os.Remove("D:\\huawei-oj\\test\\work\\gwx.db")
if err != nil {
fmt.Println(err)
}
db, err := gorm.Open("sqlite3", "D:\\huawei-oj\\test\\work\\gwx.db")
if err != nil {
fmt.Println(err)
}
defer db.Close()

db.Callback().Create().Before("gorm:create").Register("my_plugin:before_create", beforeCreate)

db.AutoMigrate(&User{})

user := User{
Name: "jinzhu",
UserPhone: "11111",
UserQQ: "11111",
UserCity: "11111",
}

db.Create(&user)

var u User
db.First(&u)
js, err := json.MarshalIndent(u.Name, "", " ")
if err != nil {
fmt.Println(err)
}
fmt.Println(string(js))

}

gorm-sqlite的更多相关文章

  1. 使用go, gin, gorm编写一个简单的curd的api接口

    go 是一门非常灵活的语言,既具有静态语言的高性能,又有动态语言的开发速度快的优点,语法也比较简单,下面是通过简单的代码实现了一个简单的增删改查 api 接口 hello world 常规版 新建 d ...

  2. Gorm使用详解

    1.什么是Gorm go语言编写的orm框架 特点: 1)全功能ORM 2)关联(包含一个,包含多个,属于,多对多) 3)Callbacks(创建/保存/更新/删除/查找前后回调) 4)预加载 5)事 ...

  3. GORM 中文文档

    由于篇幅问题,本文只是快速开始部分,下面是完整地址. 中文文档地址:http://gorm.book.jasperxu.com/ 中文文档项目地址:https://github.com/jasperx ...

  4. Go orm框架gorm学习

    之前咱们学习过原生的Go连接MYSQL的方法,使用Go自带的"database/sql"数据库连接api,"github.com/go-sql-driver/mysql& ...

  5. [开源]Gin + GORM + Casbin+vue-element-admin 实现权限管理系统(golang)

    简析 基于 Gin + GORM + Casbin + vue-element-admin 实现的权限管理系统. 基于Casbin 实现RBAC权限管理. 前端实现: vue-element-admi ...

  6. GORM入门指南

    gorm是一个使用Go语言编写的ORM框架.它文档齐全,对开发者友好,支持主流数据库. gorm介绍 Github GORM 中文官方网站内含十分齐全的中文文档,有了它你甚至不需要再继续向下阅读本文. ...

  7. gorm demo

    package main import ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/g ...

  8. 如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (三)

    修改数据结构   基本的 API 已经定义好了,现在是个修改 Person 对象结构的好时机.只要修改 Person 结构体,数据库和 API 都会自动做出相应的修改.   我要做的是在 Person ...

  9. 如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (一)

    介绍   Go 语言最近十分火热,但对于新手来说,想立马上手全新的语法和各种各样的框架还是有点难度的.即使是基础学习也很有挺有挑战性.   在这篇文章中,我想用最少的代码写出一个可用的 API 服务. ...

  10. 如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (二)

    创建 API   我们之前已经跑过 Gin 框架的代码,现在是时候加些功能进去了. 读取全部信息   我们先从"增删改查"中的"查"入手,查询我们之前添加的信息.我接下来要删除几行代码,并把 Gin ...

随机推荐

  1. Linux虚拟机破解密码步骤

    Linux破解密码 重启系统 到达logo界面快速 按 e 编辑当前条目 将光标移至以 linux 开头的行,此为内核命令行 在UTF-8(RHEL7):ro(RHEL8)后添加 rd.break ( ...

  2. HCNP Routing&Switching之IP安全

    前文我们了解了DHCP安全相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16637627.html:今天我们来聊一聊IP安全相关话题: 技术背景 随着 ...

  3. git reset总结

    git reset git 的重置操作 有三种模式:hard.mixed(默认).soft 1. hard 用法 hard会重置stage区和工作区,和移动代码库上HEAD 和branch的指针所指向 ...

  4. React Native入门 Enable live Reload

    在开发项目时,有时一点点小修改就需要重新编译,打包,安装,效率比较低 RN 提供了一种实时重载 (Enable live Reload)的方式,来实现快速的调试开发,修改保存后会立刻载真机或模拟器中显 ...

  5. Java套接字实现应用程序对数据库的访问

    最近在完成软件体系结构上机实验时,遇到一个有点点小难度的选做题,题目信息如下: 利用套接字技术实现应用程序中对数据库的访问.应用程序只是利用套接字连接向服务器发送一个查询的条件,而服务器负责对数据库的 ...

  6. Java根据Freemarker模板生成Word文件

    1.  准备模板 模板 + 数据 = 模型 1.将准备好的Word模板文件另存为.xml文件(PS:建议使用WPS来创建Word文件,不建议用Office) 2.将.xml文件重命名为.ftl文件 3 ...

  7. Prometheus Operator 对接 Thanos

    文章转载自:https://jishuin.proginn.com/p/763bfbd56ae4 使用 Prometheus Operator 来进行监控,在 Prometheus 高可用的章节中也手 ...

  8. MySQL 安装(二进制版)

    MySQL 的安装方式一般分为三种,二进制版本.编译版本.RPM 包.比较常见的是二进制版本安装,方便简单,相对于编译安装,如果不是追求极致性能,使用起来差别不大.本次教程以二进制版本为例,系统为 c ...

  9. Docker — 从入门到实践(v1.2.0)

    在线地址:https://www.bookstack.cn/read/docker_practice-1.2.0 pdf文件下载地址:https://files.cnblogs.com/files/s ...

  10. 计算机三大硬件和操作系统以及python解释器

    今日分享内容概要 计算机五大组成部分详解 计算机三大核心硬件 操作系统 编程与编程语言 编程语言的发展历史 编程语言的分类 python解释器 python解释器多版本共存 分享详细 计算机五大组成部 ...