xorm基本使用

509 阅读2分钟

Go 标准库提供的数据库接口database/sql比较底层,使用它来操作数据库非常繁琐,而且容易出错。于是社区开源了不少第三方库,比如sqlc工具,以及各式各样的 ORM (Object Relational Mapping,对象关系映射库),如gormxorm

xorm 模块安装

# 安装 xorm
go get xorm.io/xorm

# 安装 mysql 驱动
go get github.com/go-sql-driver/mysql

获取数据库连接

xorm中将数据库连接后的对象统一封装到了*xorm.Engine中,所以,我们只需要通过NewEngine()函数拿到Engine对象,即可实现对数据库的操作:

var engine *xorm.Engine
var err error
engine, err = xorm.NewEngine("mysql", "用户名:密码@tcp(数据库地址:数据库端口)/数据库?charset=utf8&parseTime=True")

快速使用

  1. 将数据库中的表与对应 Go 代码中的结构体做同步。在数据库内创建一个表:
package main

import (
  "log"
  "time"

  _ "github.com/go-sql-driver/mysql"
  "xorm.io/xorm"
)

type TUser struct {
	Id         int64     `xorm:"pk autoincr BIGINT(20)"`
        //昵称
	NickName   string    `xorm:"VARCHAR(255)"`
        //用户名
	UserName   string    `xorm:"VARCHAR(255)"`
        //密码
	Pwd        string    `xorm:"VARCHAR(255)"`
        //是否已删除.0为正常,1为已删除
	Deleted    int       `xorm:"default 0 TINYINT(1)"`
        CreateTime time.Time `xorm:"not null comment('创建时间') DATETIME"`

}

func main() {
url := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True",
        "用户名",
        "密码",
        "数据库地址",
        "3306",
        "try")
  db, err := xorm.NewEngine("mysql", url)

  if err != nil {
    log.Fatal(err)
  }

  err = db.Sync2(new(TUser))
  if err != nil {
    log.Fatal(err)
  }
}

上面的代码将会在数据库生成一张叫t_user的表,内容如下:

图片.png

去看大佬的博客-Go 每日一库之 xorm

xorm结构体映射规则和表操作

我们在field对应的Tag中对Column的一些属性进行定义,用于对我们的项目中的数据库表字段进行设置和限定。具体看大佬博客:xorm框架学习系列(二):xorm结构体映射规则和表操作xorm的使用(二)结构体映射规则

参考大佬的博客-Golang之xorm基本使用

log.Fatal() 和 panic() 函数的区别