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/**的實體。
總結
- 上一篇: iOS中MQTT和WS的简单混合使用
- 下一篇: 33页政务大数据平台-数据智能治理子平台