内容简介:版权声明:本文为博主尹成联系QQ77025077,微信18510341407原创文章,欢迎转载侵权不究。 https://blog.csdn.net/yincheng01/article/details/84068613
版权声明:本文为博主尹成联系QQ77025077,微信18510341407原创文章,欢迎转载侵权不究。 https://blog.csdn.net/yincheng01/article/details/84068613
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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- mongoDB原生查询与spring data mongoDB的对象
- Mybatis关联查询(嵌套查询)
- MySQL高级查询---连接查询实例
- 零信任原生安全:超越云原生安全
- Oracle子查询相关内容(包含TOP-N查询和分页查询)
- Laravel Query Builder 复杂查询案例:子查询实现分区查询 partition by
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Apache源代码全景分析第1卷
2009-5 / 88.00元
《Apache源代码全景分析第1卷:体系结构与核心模块》是“Apache源代码全景分析”的第1卷。书中详细介绍了Apache的基础体系结构和核心模块的实现机制,包括配置文件、模块化结构、多任务并发,以及网络连接和请求读取,其中多任务并发体系结构是《Apache源代码全景分析第1卷:体系结构与核心模块》分析的重点,讨论了Prefork、Worker及WinNT三种MPM。《Apache源代码全景分析......一起来看看 《Apache源代码全景分析第1卷》 这本书的介绍吧!