Go Xorm简单使用

官网相关文档

https://xorm.io/zh/docs/chapter-01/1.engine/https://gitea.com/xorm/xorm/src/branch/master/README_CN.md

xorm 是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便

安装

go get xorm.io/xorm

特性:

  • 支持 Struct 和数据库表之间的灵活映射,并支持自动同步
  • 事务支持
  • 同时支持原始SQL语句和ORM操作的混合执行
  • 使用连写来简化调用
  • 支持使用ID, In, Where, Limit, Join, Having, Table, SQL, Cols等函数和结构体等方式作为条件
  • 支持级联加载Struct
  • Schema支持(仅Postgres)
  • 支持缓存
  • 通过 xorm.io/reverse 支持根据数据库自动生成 xorm 结构体
  • 支持记录版本(即乐观锁)
  • 通过 xorm.io/builder 内置 SQL Builder 支持
  • 上下文缓存支持
  • 支持日志上下文

使用

  • 封装一个连接mysql的函数
package util

import (
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"xorm.io/xorm"
	"xorm.io/xorm/names"
)

var Engine *xorm.Engine
var (
	host        = "127.0.0.1"
	port        = "3306"
	username    = "root"
	pasword     = "111111"
	defaultCode = "charset=utf8"
	dbName      = "test"
)

func InitMysql() error {
	var err error
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?%s", username, pasword, host, port, dbName, defaultCode)
	Engine, err = xorm.NewEngine("mysql", dsn)
	if err != nil {
		fmt.Println(err)
		return err
	}
	err = Engine.Ping()
	if err != nil {
		fmt.Println(err)
		return err
	}
	fmt.Println("connect success")
	Engine.SetMapper(names.SameMapper{}) //设置表字段名与结构体字段名一致,默认的是SnakeMapper
	return nil
}
  • 调用
package main

import (
	"basicProject/util"
	"fmt"
)

type Goods struct {
	Id         int
	Name       string
	CreateTime string
	UpdateTime string
}

func main() {
	err := util.InitMysql()
	if err != nil {
		fmt.Println("connect fail")
	}
	err = util.Engine.Sync(new(Goods)) //同步,把结构体同步到数据库里,生成对应的表和字段
					  //同步后如果结构体又增加了字段,再次编译运行后就会自动同步新的字段到数据表里
	if err != nil {
		fmt.Println(err)
		return
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值