成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > golang中xorm的基本使用說明

golang中xorm的基本使用說明

熱門標(biāo)簽:鄭州智能語音電銷機(jī)器人價格 仙桃400電話辦理 不封卡外呼系統(tǒng) 宿遷便宜外呼系統(tǒng)代理商 湛江crm外呼系統(tǒng)排名 地圖標(biāo)注免費(fèi)定制店 寧波語音外呼系統(tǒng)公司 重慶慶云企業(yè)400電話到哪申請 上海極信防封電銷卡價格

簡單的用法

package main 
import (
 _ "github.com/go-sql-driver/mysql"
 "github.com/go-xorm/xorm"
 "log"
)
 
//定義結(jié)構(gòu)體(xorm支持雙向映射)
type User struct {
 User_id int64 `xorm:"pk autoincr"` //指定主鍵并自增
 Name string `xorm:"unique"` //唯一的
 Balance float64
 Time int64 `xorm:"updated"` //修改后自動更新時間
 Creat_time int64 `xorm:"created"` //創(chuàng)建時間
 //Version int `xorm:"version"` //樂觀鎖
}
 
//定義orm引擎
var x *xorm.Engine 
//創(chuàng)建orm引擎
func init() {
 var err error
 x, err = xorm.NewEngine("mysql", "root:root@tcp(127.0.0.1:3306)/xorm?charset=utf8")
 if err != nil {
 log.Fatal("數(shù)據(jù)庫連接失敗:", err)
 }
 if err := x.Sync(new(User)); err != nil {
 log.Fatal("數(shù)據(jù)表同步失敗:", err)
 }
}
 
//增
func Insert(name string, balance float64) (int64, bool) {
 user := new(User)
 user.Name = name
 user.Balance = balance
 affected, err := x.Insert(user)
 if err != nil {
 return affected, false
 }
 return affected, true
}
 
//刪
func Del(id int64) {
 user := new(User)
 x.Id(id).Delete(user)
}
 
//改
func update(id int64, user *User) bool {
 affected, err := x.ID(id).Update(user)
 if err != nil {
 log.Fatal("錯誤:", err)
 }
 if affected == 0 {
 return false
 }
 return true
}
 
//查
func getinfo(id int64) *User {
 user := User{User_id: id}
 is, _ := x.Get(user)
 if !is {
 log.Fatal("搜索結(jié)果不存在!")
 }
 return user
}
 

在gin中的用法

package main 
import (
 "github.com/gin-gonic/gin"
 "./models"
 "strconv"
)
 
//添加操作
func insert(c *gin.Context) {
 name := c.Query("name")
 if name == "" {
 c.JSON(200, gin.H{"msg": "name不得為空!"})
 return
 }
 
 money := c.Query("money")
 if money == "" {
 c.JSON(200, gin.H{"msg": "money不得為空!"})
 return
 }
 
 Balance, _ := strconv.ParseFloat(money, 64)
 //添加
 user := models.User{}
 user.Name = name
 user.Balance = Balance
 rel, err := models.X.Insert(user) 
 if rel == 0 || err != nil {
 c.JSON(200, gin.H{"msg": "添加錯誤", "err": err, "rel": rel})
 } else {
 c.JSON(200, gin.H{"msg": "添加成功"})
 }
}
 
//查詢單個操作
func get(c *gin.Context) {
 id := c.Query("id")
 if id == "" {
 c.JSON(200, gin.H{"msg": "id不得為空!"})
 return
 }
 //string轉(zhuǎn)int64
 ids, _ := strconv.ParseInt(id, 10, 64)
 //查詢1
 //user := User{User_id: ids}
 //rel, err := models.X.Get(user)
 //查詢2
 user := models.User{}
 rel, err := models.X.Where("user_id = ?", ids).Get(user)
 
 if !rel || err != nil {
 c.JSON(200, gin.H{"msg": "查詢錯誤"})
 } else {
 c.JSON(200, gin.H{"user": user})
 }
}
 
//查詢多條操作
func find(c *gin.Context) {
 users := make(map[int64]models.User)
 err := models.X.Find(users)
 if err != nil {
 c.JSON(200, gin.H{"msg": err})
 }
 c.JSON(200, gin.H{"msg": users})
}
 
//修改操作
func updates(c *gin.Context) {
 id := c.Query("id")
 if id == "" {
 c.JSON(200, gin.H{"msg": "id1不得為空!", "id": id})
 return
 }
 ids, _ := strconv.ParseInt(id, 10, 64) 
 name := c.Query("name")
 if name == "" {
 c.JSON(200, gin.H{"msg": "name不得為空!"})
 return
 }
 
 balance := c.Query("balance")
 if balance == "" {
 c.JSON(200, gin.H{"msg": "balance不得為空!"})
 return
 }
 money, _ := strconv.ParseFloat(balance, 64)
 //修改
 user := models.User{}
 user.Name = name
 user.Balance = money
 rel, err := models.X.Id(ids).Update(user)
 
 if rel == 0 || err != nil {
 c.JSON(200, gin.H{"msg": "修改錯誤!", "rel": rel, "err": err, "user": user})
 } else {
 c.JSON(200, gin.H{"mag": "修改成功"})
 }
}
 
//刪除操作
func delte(c *gin.Context) {
 id := c.Query("id")
 if id == "" {
 c.JSON(200, gin.H{"msg": "id1不得為空!", "id": id})
 return
 }
 //string轉(zhuǎn)化int64
 ids, _ := strconv.ParseInt(id, 10, 64)
 //刪除
 user := models.User{}
 rel, err := models.X.Id(ids).Delete(user)
 
 if rel == 0 || err != nil {
 c.JSON(200, gin.H{"msg": "刪除錯誤!", "rel": rel, "err": err, "user": user})
 } else {
 c.JSON(200, gin.H{"mag": "刪除成功"})
 }
}
 
//事務(wù)的提交以及回滾
func gun(c *gin.Context) {
 //創(chuàng)建session
 session := models.X.NewSession()
 defer session.Close()
 //創(chuàng)建事務(wù)
 err := session.Begin()
 if err != nil {
 c.JSON(200, gin.H{"err": err})
 return
 }
 //操作事務(wù),失敗并回滾(模擬購物車結(jié)算情景)
 car_id := c.Query("car_id")
 if car_id == "" {
 c.JSON(200, gin.H{"msg": "car_id1不得為空!", "car_id": car_id})
 return
 }
 
 //查找購物車中的商品id
 ids, _ := strconv.ParseInt(car_id, 10, 64)
 car := models.Car{Car_id: ids}
 models.X.Get(car)
 
 /**
 * goods表庫存減去銷量
 */
 //查詢商品
 goods := models.Goods{Goods_id: car.Goods_id}
 models.X.Get(goods)
 //更新庫存
 good := models.Goods{}
 good.Stock = goods.Stock - car.Num
 rel4, err4 := session.ID(car.Goods_id).Update(good)
 if rel4 == 0 || err4 != nil {
 session.Rollback()
 c.JSON(200, gin.H{"err4": err4, "rel4": rel4, "carid": car.Goods_id, "goodsid": goods.Goods_id, "Stock": good.Stock})
 return
 }
 
 /**
 * 用戶扣費(fèi)
 */
 //查詢用戶
 user := models.User{User_id: car.User_id}
 models.X.Get(user)
 //更新價格
 user_up := models.User{}
 user_up.Balance = user.Balance - car.Total_price
 rel1, err1 := session.ID(car.User_id).Update(user_up)
 if err1 != nil || rel1 == 0 {
 session.Rollback()
 c.JSON(200, gin.H{"err1": err1, "rel1": rel1})
 return
 }
 
 /**
 * 刪除用戶的購物車信息
 */
 rel2, err2 := session.Delete(car)
 if err2 != nil || rel2 == 0 {
 session.Rollback()
 c.JSON(200, gin.H{"err2": err2, "rel2": rel2})
 return
 }
 if user_up.Balance = 0 {
 session.Rollback()
 c.JSON(200, gin.H{"msg": "余額不足"})
 return
 }
 
 err3 := session.Commit()
 if err3 != nil {
 c.JSON(200, gin.H{"err3": err3})
 return
 }
 c.JSON(200, gin.H{"msg": "用戶扣費(fèi)成功"})
}
 
func update_goods(c *gin.Context) {
 id := c.Query("id")
 if id == "" {
 c.JSON(200, gin.H{"msg": "id1不得為空!", "id": id})
 return
 }
 //string轉(zhuǎn)換int64
 ids, err := strconv.ParseInt(id, 10, 64)
 
 goods_name := c.Query("goods_name")
 if goods_name == "" {
 c.JSON(200, gin.H{"msg": "goods_name不得為空!", "goods_name": goods_name})
 return
 }
 
 price := c.Query("price")
 if price == "" {
 c.JSON(200, gin.H{"msg": "price不得為空!", "price": price})
 return
 }
 prices, _ := strconv.ParseFloat(price, 64)
 
 stock := c.Query("stock")
 if stock == "" {
 c.JSON(200, gin.H{"msg": "stock不得為空!", "stock": stock})
 return
 }
 stocks, _ := strconv.ParseInt(stock, 10, 64)
 
 //修改
 goods := models.Goods{}
 goods.Stock = stocks
 goods.Goods_name = goods_name
 goods.Price = prices
 rel, err := models.X.ID(ids).Update(goods)
 if rel == 0 || err != nil {
 c.JSON(200, gin.H{"msg": "修改失敗", "err": err, "stocks": stocks, "goods_name": goods_name, "prices": prices, "id": id})
 } else {
 c.JSON(200, gin.H{"msg": "修改成功"})
 }
}
 
func shiwu(c *gin.Context) {
 session := models.X.NewSession()
 defer session.Close()
 
 err := session.Begin()
 user1 := models.User{Name: "xiaoxiao1", Balance: 100}
 _, err = session.Insert(user1)
 if err != nil {
 return
 }
 
 session.Rollback()
 data := make(map[string]interface{})
 data["msg"] = "錯誤"
 c.JSON(200, session)
 c.JSON(200, data)
 return
 
 //提交
 err = session.Commit()
 if err != nil {
 return
 }
}
 
func main() {
 r := gin.Default()
 r.GET("/insert", insert)
 r.GET("/get", get)
 r.GET("/find", find)
 r.GET("/updates", updates)
 r.GET("/delte", delte)
 r.GET("/update_goods", update_goods)
 r.GET("/gun", gun)
 r.GET("/shiwu", shiwu)
 r.Run(":88")
}

需要填坑的是:這里面我使用事務(wù)一直實(shí)現(xiàn)不了回滾,再次細(xì)致閱讀文檔才發(fā)現(xiàn),

而關(guān)于innodb的設(shè)置方法,這里有一個很好的教程 //www.jb51.net/article/202470.htm

補(bǔ)充:golang xorm MSSQL where查詢案例

xorm官方中文文檔 參考 http://xorm.io/docs/

以sqlserver為例

先初始化連接等...

engine, err := xorm.NewEngine("mssql", "server=127.0.0.1;user id=sa;password=123456;database=dbname")
//控制臺打印SQL語句
engine.ShowSQL(true)
if err != nil {
 fmt.Println(err)
}
defer engine.Close()

一、查詢案例

ids := []model.MsIdcaid{} //實(shí)體定義的話自己寫
engine.Cols("Id", "Address").Where("id in(2,3,4,5,6)").OrderBy("id desc,address asc").Find(ids)
//[SQL] SELECT "Id", "Address" FROM "cdsgus" WHERE (id in(2,3,4,5,6)) ORDER BY id desc,address asc
或者直接自己寫SQL
engine.SQL("SELECT Address from cdsgus where id in (2,3,4,6) order by id desc ").Find(ids)
//[SQL] SELECT Address from cdsgus where id in (2,3,4,6) order by id desc 

二、分頁查詢

方式一 :用Limit(int i,int j) 方法, i=要取的條數(shù), j=開始的位置

MSSQL 雖然執(zhí)行的結(jié)果正確,可以看到生成的分頁SQL很亂,建議直接MSSQL分頁直接用方式二寫在SQL里。其他數(shù)據(jù)庫應(yīng)該是沒有問題, 如:mysql

其實(shí)本文用數(shù)據(jù)庫的版本SQL2014 是支持:OFFSET 2 ROW FETCH NEXT 10 ROW ONLY的寫法的,xorm并未識別數(shù)據(jù)庫的版本調(diào)整分頁SQL

engine.Cols("Id", "Name").Where("id in(2,3,4,5,6)").OrderBy("id desc,address asc").Limit(10, 2).Find(ids)
//[[SQL] SELECT TOP 10 "Id", "Name" FROM "cdsgus" WHERE (id in(2,3,4,5,6)) AND (id NOT IN (SELECT TOP 2 id FROM "cdsgus" WHERE (id in(2,3,4,5,6)) ORDER BY id desc,address asc)) ORDER BY id desc,address asc

方式二 :用原生的SQL方法 ,很妥

engine.SQL("SELECT Id,Name from cdsgus where id in (2,3,4,5,6) order by id desc OFFSET 2 ROW FETCH NEXT 10 ROW ONLY").Find(ids)
//[SQL] SELECT Id,Name from cdsgus where id in (2,3,4,5,6) order by id desc OFFSET 2 ROW FETCH NEXT 10 ROW ONLY

方式三 :用原生的SQL + Limit 方法 ??MSSQL居然是錯誤SQL結(jié)果

engine.Sql("SELECT Id,Name from cdsgus where id in (2,3,4,5,6) ").OrderBy("id").Limit(10, 2).Find(ids)
//[SQL] SELECT Id,Name from cdsgus where id in (2,3,4,5,6) 
data, _ := engine.Sql("SELECT Id,Name from cdsgus where id in (2,3,4,5,6) ").OrderBy("id").Limit(10, 2).Query()
//[SQL] SELECT Id,Name from cdsgus where id in (2,3,4,5,6) 

方式四 : github.com/go-xorm/builder

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 在golang xorm中使用postgresql的json,array類型的操作
  • golang xorm及time.Time自定義解決json日期格式的問題
  • golang xorm日志寫入文件中的操作
  • go語言 xorm框架 postgresql 的用法及詳細(xì)注解
  • 解決goxorm無法更新值為默認(rèn)值的問題
  • xorm根據(jù)數(shù)據(jù)庫生成go model文件的操作
  • 使用go xorm來操作mysql的方法實(shí)例
  • go xorm框架的使用

標(biāo)簽:物業(yè)服務(wù) 海南 儋州 西雙版納 青海 安康 遼寧 電子產(chǎn)品

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang中xorm的基本使用說明》,本文關(guān)鍵詞  golang,中,xorm,的,基本,使用說明,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang中xorm的基本使用說明》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang中xorm的基本使用說明的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    青青国产在线观看| 国产白丝网站精品污在线入口| 日韩精品一页| 国产特级黄色片| 欧美性受xxxx黑人猛交88| 国产精品久久9| 亚洲色图图片区| 日本欧美一级片| 欧美成人aaa片一区国产精品| 日韩一区二区在线播放| 欧美日韩黑人| 精品成人免费自拍视频| 亚洲欧美日韩中文视频| 欧美日本免费| 中文字幕一区二区三区乱码不卡| 国产一区在线免费| av免费在线观看网站| 一区二区日韩av| 亚洲欧美日韩中文字幕一区二区三区| 亚洲精品无amm毛片| 欧美日韩精品免费看| 妺妺窝人体色www看人体| 桃乃木かなav在线播放| 日韩一级网站| 精品国产成人在线影院| 国产精品高清一区二区三区| 在线看国产一区| 波多野洁衣一区| 欧美 日韩精品| 大胆高清日本a视频| www在线观看免费视频| 欧美精品a∨在线观看不卡| 欧美视频不卡| 亚洲午夜精品久久久久久久久| 国产网站免费看| 日本黄色免费片| 青青草免费观看免费视频在线| 日韩在线视频导航| 在线亚洲午夜片av大片| 台湾成人av| 97视频在线观看视频免费视频| 久久电影tv| 国产精品成人无码专区| 国产伦精品一区三区精东| 女人扒开双腿让男人捅| 蜜臀av一区二区三区| 亚洲人成精品久久久久久| 免费观看一级特黄欧美大片| 99久久精品久久久久久ai换脸| 国产一级免费大片| 日韩高清精品免费观看| 综合婷婷亚洲小说| 视频一区二区三区入口| 老司机免费视频一区二区三区| 少妇高潮毛片色欲ava片| 欧美午夜视频在线| 亚洲国产中文字幕在线| 色综合久久五月天| 波多野结衣三级在线| 青青草观看免费视频在线| 国产综合无码一区二区色蜜蜜| 麻豆精品视频在线| 国产成人高清精品免费5388| 樱花视频在线免费观看| 99国产成+人+综合+亚洲欧美| 日本aⅴ大伊香蕉精品视频| 奇米777影视成人四色| 一本色道久久综合亚洲二区三区| 亚洲制服欧美久久| 国产亚洲欧美另类中文| 天天做天天爱夜夜爽| 亚洲综合色av| 国产日韩精品中文字无码| 国产九区一区在线| 欧美日韩日本网| 欧美在线亚洲| 国产精品视频看| 高清无码视频直接看| 欧洲色大大久久| 免费成人黄色| 网站黄在线观看| 四虎成人永久免费视频| 亚洲国产日韩在线一区模特| av电影在线网| 台湾十八成人网| 日日狠狠久久偷偷四色综合免费| 日韩在线视频一区二区三区| 成人av网站在线观看免费| 中日韩一级黄色片| 欧美三区免费完整视频在线观看| 日韩国产欧美一区| 中文字幕精品在线播放| 91捆绑美女网站| 日韩欧美中文字幕电影| 四虎影视一区二区| 国产精品久久久久久久天堂| 91影视免费在线观看| 成人午夜大片| 亚洲欧美另类综合偷拍| 亚洲午夜精品| 欧美成年人在线观看| 久久综合中文色婷婷| 性欧美.com| 少妇高潮喷水在线观看| 一级毛片免费播放| 欧美大黄免费观看| 嫩草影院在线观看网站成人| 在线观看av日韩| 亚洲a中文字幕| jjzzjjzzjjzz| 色先锋av资源在线| 国产精品乡下勾搭老头1| 天堂va蜜桃一区二区三区漫画版| 中文字幕日韩视频| 久久精品a一级国产免视看成人| 欧美三级又粗又硬| 一级全黄少妇性色生活片| 4444kk在线观看| 日韩av在线网页| 美女福利视频一区二区| 亚洲最大成人网色| 欧美激情精品久久久久久大尺度| 天堂在线观看免费视频| 久久精品97| 久久久久久久久久久久久久一区| 91在线码无精品| 周于希免费高清在线观看| 一区二区三区免费在线看| 国产精品一区二区三区毛片淫片| 国产亚洲综合精品| 久久99精品视频一区97| 亚洲三级精品| 美女性感视频久久久| 国产男女无遮挡猛进猛出| 久久99国产精品久久99大师| 在线免费a视频| 男人的天堂www| 欧美一二区视频| 在线观看成人黄色| 欧美国产精品| 久久久久久久成人| 国产区高清在线| 久久99精品久久久水蜜桃| 在线观看老湿视频福利| 国产传媒第一页| 91丨九色丨丰满| 国产一区二区不卡视频在线观看| 日本一区二区免费在线观看| 色一情一乱一区二区| 人人做人人爽人人爱| 992tv在线成人免费观看| 欧美成人高清手机在线视频| 99视频日韩| 久久久久国产一区二区三区| 久草资源在线观看| 99riav一区二区三区| 亚洲色欲久久久综合网东京热| 久久久久久99| 波多野结衣一区二区三区| 午夜精品短视频| 少妇熟女一区二区| 极品白嫩的小少妇| 在线三级中文| 日韩欧美成人午夜| 日本xxxwww免费视频| 精品毛片在线观看| 传媒视频在线| 性高潮久久久久久久久| 污视频网址在线观看| 欧洲一区二区在线观看| 国产黄视频在线观看| 国产色综合一区二区三区| 亚洲国产婷婷综合在线精品| 一区二区三区日韩视频| 国产在线第二页| 91久久麻豆| 在哪里可以看毛片| 国产在线一区二区三区四区| 丝袜在线视频| 日韩专区在线播放| 免费看ww视频网站入口| 日韩精品人妻中文字幕有码| 色婷婷av一区二区三区丝袜美腿| 日韩欧美国产三级电影视频| 免费国产自久久久久三四区久久| 日本国产精品| 成人视屏免费看| 91美女高潮出水| 中文字幕第一区| 鲁大师成人一区二区三区| 国产白浆在线| 久久久久女教师免费一区| 嫩草影院一区二区| 在线不卡的av| 在线观看av一区二区| 制服丝袜激情欧洲亚洲| 自拍偷拍欧美一区| 中文字幕在线资源| 777午夜精品电影免费看| 久久99精品久久久久久久青青日本| 欧美日韩123区| 激情久久一区| 国产成人精品亚洲日本在线观看| 欧美精品一区二区视频| 亚洲视频在线免费| 欧洲午夜精品| www.四虎.com| 国内成+人亚洲+欧美+综合在线| 乱码第一页成人| 国产成人一区二区三区电影| 超碰在线最新| 日韩av在线播放网址| 一级做a爱片久久| 亚洲高潮女人毛茸茸| wwwwxxxxx欧美| 免费在线看v| 国产一区二区三区四区五区六区| 国产女人18水真多18精品一级做| www.91av.com| avtt久久| 色在线视频观看| 亚洲精品乱码久久久久久蜜桃91| 欧美日韩dvd| 99久久99久久精品国产片果冻| 丰满爆乳一区二区三区| 欧美日韩亚洲国内综合网| 女同互忝互慰dv毛片观看| 欧美一区二区三区四区高清| 四虎成人精品永久免费av九九| 九一在线免费观看| 少妇精69xxtheporn| 成人免费毛片男人用品| 97精品久久人人爽人人爽| 日韩av影视在线| 日韩午夜高潮| 国产成人在线免费观看视频| 亚洲综合久久久久| 日韩专区第一页| 你懂的视频在线免费| 日韩av男人的天堂| 欧美视频专区一二在线观看| 91精品精品| 深夜宅男网站免费进入| 一区二区乱子伦在线播放| 久久精品国产精品亚洲| 国模吧精品人体gogo| 亚洲一区二区三区黄色| 视频区小说区图片区| 中国黄色a级片| 国内一区二区视频| 国内精品美女在线观看| 国产不卡精品视频| 日本一区二区三区免费乱视频| 一级毛片aaaaaa免费看| 国产黄色在线播放| 无码视频一区二区三区| 黄色一级片播放| 久久精品久久久久| 精品国产视频一区二区三区| 国产福利电影在线播放| 人操人爱免费视频| 伊人情人综合网| 美腿丝袜亚洲三区| 久艹视频在线免费观看| 亚洲aⅴ网站| 亚洲亚洲一区二区三区| 国产精品久久久久久久久久久久久久久久| 999香蕉视频| 国产亚洲久一区二区| 国产日韩欧美一区二区三区| 免费黄色在线播放| 日韩在线你懂的| 26uuu成人网| 波多野在线播放| 成人免费不卡视频| 宅男深夜免费观看视频| 国产日韩欧美久久| 国产一区不卡视频| 日本一区二区三区视频在线观看| 国产香蕉视频在线观看| 四虎影视成人永久免费观看视频| 欧美精品麻豆| 国产精品欧美一区二区三区不卡| 国产av国片精品| 国产.欧美.日韩| 亚洲国产精品激情在线观看| 成人在线视频你懂的| 啦啦啦中文高清在线视频| 日韩一区日韩二区| 成人影院入口| 国产免费黄色片| 国产精品无码在线| 黄色免费一级视频| 午夜伦伦电影理论片费看| 久色视频在线| 88av在线| 大桥未久一区二区| 国产 中文 字幕 日韩 在线| 亚洲成人av资源| 青青艹在线观看| 欧美一区二区少妇| 午夜精品久久久久久久星辰影院| 超碰成人av| 亚洲视频第二页| 国产美女一区二区三区| 人妖精品videosex性欧美| 欧美性猛交xxxx富婆| 成人手机在线免费视频| 无码少妇精品一区二区免费动态| 日日日日影院| 日韩在线中文视频| 一区二区视频在线播放| 久久精品无码中文字幕| 日韩专区第三页| 怡春院在线视频| 2022亚洲天堂| 9191久久久久久久久久久| 成人精品一区二区三区电影免费| 色猫av在线| 永久av免费网站| 91豆花精品一区| 动漫精品视频| 成人白浆超碰人人人人| 女厕盗摄一区二区三区| 九九九在线视频| 免费中文字幕在线| 色在线中文字幕| 99精品欧美一区二区|