xorm入門


一、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
1
2
(2)創建數據庫

$ create database lottery
$ use lottery
1
2
創建完數據庫后,導入以下數據庫腳本。

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;
1
2
3
4
5
6
7
8
9
10
11
12
13
(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)"`
}
1
2
3
4
5
6
7
8
9
10
11
結構體中的每個屬性與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
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(2)定義測試方法

func main() {
// 創建xorm.Engine實例
dbEngine := NewDbEngine(http://www.my516.com)
// 定義一個切片,保存所有用戶
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])
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(3)導入mysql驅動

_ "github.com/go-sql-driver/mysql"
1
(4)運行測試,效果如下圖所示


四、反向生成實體

先進入工程所在路徑,然后執行以下命令。

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

例如:
xorm reverse mysql root:root@/fox?charset=utf8 templates/goxorm
1
2
3
4
5
上面命令會把數據庫表反向生成models/**的實體。
---------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM