原生SQL查詢
type SqlController struct {
beego.Controller
}
#Prepare
sql語句在傳送到伺服器時會做語法檢查和編譯,然而我們多次執行同一功能的sql語句,只是每次傳遞的引數不一致,所以我們可以通過Prepare進行預處理,這樣伺服器只需要,做一次語法檢查和編譯,極大的提高了執行sql語句的效率
func (this *SqlController) GetPrepare() {
//1.建立orm
orm := orm.NewOrm()
p, err := orm.Raw("update user set name = ? where name = ?").Prepare()
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
return
}
res, err := p.Exec("吳俏祥", "123")
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
n, err := res.RowsAffected()
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
fmt.Println("n = ", n)
res, err = p.Exec("尹成大魔王", "mike")
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
n, err = res.RowsAffected()
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
fmt.Println("n = ", n)
res, err = p.Exec("兄弟連", "asde")
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
n, err = res.RowsAffected()
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
fmt.Println("n = ", n)
this.Ctx.WriteString("成功!")
}
#將將指定的欄位解析到map
func (this *SqlController) GetRawsToMap() {
//1.建立map
res := make(orm.Params)
//2.建立orm
orm := orm.NewOrm()
//3.通過sql語句查詢
//將user表中name作為鍵,nickname作為值存入map中,其中鍵是string型別,
// 如果型別不匹配beego會自動轉換為string型別
/*n, err := orm.Raw("select nickname, name from user").
RowsToMap(&res, "name", "nickname")*/
n, err := orm.Raw("select * from user").RowsToMap(&res, "age", "name")
//4.處理錯誤
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
return
}
//5.列印結果
fmt.Println("n = ", n)
for key, value := range res {
fmt.Println(key, " = ", value)
}
//6.給客戶端返回資料
this.Ctx.WriteString("查詢成功!")
}
#QueryRows
func (this *SqlController) GetQueryRows(){
//1.建立user切片
var users []*models.User
//2.建立orm
orm := orm.NewOrm()
//3.通過sql語句查詢
n, err := orm.Raw("select * from user where name = ?", "mike").QueryRows(&users)
//4.處理錯誤
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
return
}
//5.列印結果
fmt.Println("n = ", n)
for _, user := range users {
fmt.Println("user = ", user)
}
//6.給客戶端返回資料
this.Ctx.WriteString("查詢成功!")
}
#QueryRow
func (this *SqlController) GetQueryRow() {
//1.建立user物件
//user := models.User{}
var user models.User
//2.建立orm
orm := orm.NewOrm()
//3.通過sql語句查詢
err := orm.Raw("select * from user where id = ?", 3).QueryRow(&user)
//4.處理錯誤
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
return
}
//5.列印結果
fmt.Println("user = ", user)
this.Ctx.WriteString("查詢成功!")
}
#Exec
func (this *SqlController) GetRawAndExec() {
//建立orm
orm := orm.NewOrm()
//raw函式中的引數是sql語句,形式引數通過?佔位,後面提供的實際引數和?的順序一一對應
//Exec()函式的功能是執行sql語句
res, err := orm.Raw("update user set name = ? where id = ?", "admin", 7).Exec()
if err != nil {
this.Ctx.WriteString("查詢失敗!")
return
}
n, err := res.RowsAffected()//查詢受影響的行數
if err != nil {
this.Ctx.WriteString("查詢失敗!")
return
}
this.Ctx.WriteString("mysql row affected nums = " + strconv.Itoa(int(n)))
}
學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928
清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980
相關文章
- SQL查詢的:子查詢和多表查詢SQL
- SQL--查詢SQL
- SQL 聚合查詢SQL
- SQL查詢總結SQL
- SQL連線查詢SQL
- SQL高階查詢SQL
- sql常用查詢命令SQL
- SQL 複雜查詢SQL
- Django筆記二十一之使用原生SQL查詢資料庫Django筆記SQL資料庫
- HighgoDB查詢慢SQL和阻塞SQLGoSQL
- pid,sid相互查詢,根據PID查詢sqlSQL
- sql查詢語句流程SQL
- SQL mother查詢語句SQL
- SQL 唯一查詢SQL
- 優化sql查詢速度優化SQL
- SQL查詢語句 (Oracle)SQLOracle
- SQL慢查詢排查思路SQL
- sql 模糊查詢問題SQL
- sql查詢更新update selectSQL
- Sql介紹 與 Sql基礎查詢SQL
- 391、Java框架46 -【Hibernate - 查詢HQL、查詢Criteria、查詢標準SQL】 2020.10.19Java框架SQL
- SQL-基礎語法 - 條件查詢 - 模糊查詢SQL
- SQL-小白最佳入門sql查詢一SQL
- ATM-簡單SQL查詢SQL
- SQL 三表聯合查詢SQL
- MongoDB 如何支援類 SQL 查詢MongoDBSQL
- 01-sql-聯合查詢SQL
- SQL的基礎查詢案例SQL
- SQL 查詢中的 NULL 值SQLNull
- ASP.Net LINQ to SQl查詢ASP.NETSQL
- 幾個SQL查詢小技巧SQL
- sql-server高階查詢SQLServer
- Spring Data Jpa 的簡單查詢多表查詢HQL,SQL ,動態查詢, QueryDsl ,自定義查詢筆記SpringSQL筆記
- MyBatis(六) sql片段定義、級聯查詢、巢狀查詢MyBatisSQL巢狀
- 【SQL】Oracle查詢轉換之物化檢視查詢重寫SQLOracle
- sql 連線查詢例項(left join)三表連線查詢SQL
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL
- SQL SERVER死鎖查詢,死鎖分析,解鎖,查詢佔用SQLServer