日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

xorm入门

發布時間:2024/3/24 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

(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=utf8dbUrl := 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)}// 顯示sqlengine.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/**的實體。

總結

以上是生活随笔為你收集整理的xorm入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。