xorm入门

3 篇文章 0 订阅

一、xorm介绍

xorm是一个Go语言的ORM库。通过它可以使数据库操作非常简便。xorm的目标并不是让你完全不去学习SQL,xorm可以解决绝大部分的简单SQL需求。

二、环境准备

(1)下载xorm和mysql驱动

$ go get github.com/go-xorm/cmd/xorm
$ go get -u github.com/go-sql-driver/mysql

(2)创建数据库

$ create database lottery
$ use lottery

创建完数据库后,导入以下数据库脚本。

DROP TABLE IF EXISTS `lt_user`;
CREATE TABLE `lt_user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL DEFAULT '' COMMENT '用户名',
  `blacktime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '黑名单限制到期时间',
  `realname` varchar(50) NOT NULL DEFAULT '' COMMENT '联系人',
  `mobile` varchar(50) NOT NULL DEFAULT '' COMMENT '手机号',
  `address` varchar(255) NOT NULL DEFAULT '' COMMENT '联系地址',
  `sys_created` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
  `sys_updated` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '修改时间',
  `sys_ip` varchar(50) NOT NULL DEFAULT '' COMMENT 'IP地址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=40652 DEFAULT CHARSET=utf8;

(3)新建一个Go工程,新建一个models文件夹,然后在文件夹下定义LtUser结构体。

type LtUser struct {
	Id         int    `json:"id" xorm:"not null pk autoincr INT(10)"`
	Username   string `json:"username" xorm:"not null default '' comment('用户名') VARCHAR(50)"`
	Blacktime  int    `json:"blacktime" xorm:"not null default 0 comment('黑名单限制到期时间') INT(10)"`
	Realname   string `json:"realname" xorm:"not null default '' comment('联系人') VARCHAR(50)"`
	Mobile     string `json:"mobile" xorm:"not null default '' comment('手机号') VARCHAR(50)"`
	Address    string `json:"address" xorm:"not null default '' comment('联系地址') VARCHAR(255)"`
	SysCreated int    `json:"sys_created" xorm:"not null default 0 comment('创建时间') INT(10)"`
	SysUpdated int    `json:"sys_updated" xorm:"not null default 0 comment('修改时间') INT(10)"`
	SysIp      string `json:"sys_ip" xorm:"not null default '' comment('IP地址') VARCHAR(50)"`
}

结构体中的每个属性与lt_user表的字段一一对应。

三、第一个Hello World

(1)创建xorm.Engine实例。

// 构建一个xorm.Engine实例
func NewDbEngine() *xorm.Engine{
	// url格式:[username]:[password]@tcp([ip]:[port])/[database]?charset=utf8
	dbUrl := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8",
		"root",
		"root",
		"127.0.0.1",
		3306,
		"lottery")
	// 创建Engine实例
	engine, err := xorm.NewEngine("mysql", dbUrl)
	if err != nil {
		panic(err)
	}
	// 显示sql
	engine.ShowSQL(true)
	return engine
}

(2)定义测试方法

func main() {
	// 创建xorm.Engine实例
	dbEngine := NewDbEngine()
	// 定义一个切片,保存所有用户
	datalist := make([]models.LtUser, 0)
	// 按照id的倒序查询用户
	err := dbEngine.Desc("id").Find(&datalist)
	// 判断查询是否成功
	if err != nil {
		panic(err)
	}
	// 遍历输出结果
	for i := range datalist {
		fmt.Printf("%v \n", datalist[i])
	}
}

(3)导入mysql驱动

_ "github.com/go-sql-driver/mysql"

(4)运行测试,效果如下图所示
在这里插入图片描述

四、反向生成实体

先进入工程所在路径,然后执行以下命令。

# 命令格式
xorm reverse mysql [username]:[password]@/[database]?charset=utf8 [template]

例如:
xorm reverse mysql root:root@/fox?charset=utf8 templates/goxorm

上面命令会把数据库表反向生成models/**的实体。
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值