Go语言增强版操作Mysql(Sqlx)

Stella981
• 阅读 791

点击上方“ Go语言进阶学习 ”,进行关注

回复“Go语言”即可获赠从入门到进阶共10本电子书

春城无处不飞花,寒食东风御柳斜。

前言

上次咱们学习了如何使用Go操作Mysql,并且实现了简单的增删改查。

但是相对来说,还有有点复杂的,可能那些大佬也都觉得繁琐叭。

就又开发出了增强版查询Mysql操作库Sqlx

mod文件

go.mod

module sqlxDemo

创建数据表


创建表代码

CREATE TABLE `userinfo` (

创建结构体


结构体代码

type Userinfo struct {

连接数据库


代码

import (

查询单条

我记得使用原来的方式进行查询并且绑定结构体,是这审的。

//查询单条

第4行代码,需要将结构体的字段一个一个上去。

如果使用sqlx呢?

代码

//查询

执行结果

Go语言增强版操作Mysql(Sqlx)

还是第4行代码,直接一个结构体扔过去,就绑定成功了。

如果表有很多字段,结构体字段也有很多,这个是很有用的。

查询多条

还是惯例,看看原来是怎么查的。

//查询多条

为了方便,我去掉了err,使用伪代码处理err代替。

原来的方法,查询出来还得需要一个循环,还需要一个切片,乖乖嘞,打扰了。

来看看sqlx

代码

//查询多条

执行结果

Go语言增强版操作Mysql(Sqlx)

还是直接扔过去,就绑定完成了,真是美滋滋。

添加

额,添加,更新,删除,事物的话,似乎跟原来差不多,直接看代码叭。

代码

//添加

执行结果

Go语言增强版操作Mysql(Sqlx)

Mysql

Go语言增强版操作Mysql(Sqlx)

更新


代码

//更新数据

执行结果

Go语言增强版操作Mysql(Sqlx)

Mysql

Go语言增强版操作Mysql(Sqlx)

删除


代码

sqlStr := "delete from userinfo where id = ?;"

执行结果

Go语言增强版操作Mysql(Sqlx)

Mysql

Go语言增强版操作Mysql(Sqlx)

事物


代码

//事物

执行结果

Go语言增强版操作Mysql(Sqlx)

Mysql

Go语言增强版操作Mysql(Sqlx)

NameExec


增 删 改使用。

NameExec方法是通过结构体Map绑定SQL语句,试了试,感觉用处不大,不做举例。

NameQuery

做查询使用。

用法同上,没用,不做举例。

总结

其实sqlx模块,最大的改进是在查询方面,相信你也看到了,确实会比原生查询方便很多很多。

但是在其他方便,就显得捉襟见肘了,但是又说,一般还是查询场景多,查多改少

如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。

乾坤未定,你我皆是黑马。

我是码农星期八,如果觉得还不错,记得动手点赞一下哈。

感谢你的观看。

如果你觉得文章还可以,记得点赞留言支持我们哈。感谢你的阅读,有问题请记得在下方留言噢~

想学习更多关于Python的知识,可以参考学习网址:http://pdcfighting.com/,点击阅读原文,可以直达噢~

**********---**--****-------------- End **********---**--****--------------

Go语言增强版操作Mysql(Sqlx)

往期精彩文章推荐:

Go语言增强版操作Mysql(Sqlx)

欢迎大家点赞,留言,转发,转载,****感谢大家的相伴与支持

想加入Go学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

本文分享自微信公众号 - Go语言进阶学习(gh_dced3d6523fb)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Irene181 Irene181
3年前
一篇文章带你弄懂Python异常简介和案例分析
点击上方“Go语言进阶学习”,进行关注回复“Go语言”即可获赠从入门到进阶共10本电子书今日鸡汤似此星辰非昨夜,为谁风露立中宵。大家好,我是Go进阶者,今天给大家分享一些Python基础(异常),一起来看看吧一、异常简介当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"。二、案例分析打开一个不存在的
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Stella981 Stella981
3年前
Go语言基础之time包详解
点击上方“Go语言进阶学习”,进行关注回复“Go语言”即可获赠从入门到进阶共10本电子书今日鸡汤月落乌啼霜满天,江枫渔火对愁眠。前言一寸光阴一寸金,时间难买寸光阴,时间,是个多么重要的东西。同样,在我们的编程中,时间也依然占据着很大的一部分。就像淘宝,客户下单需要记录时间,发货了需要记录时间,
Stella981 Stella981
3年前
Go语言基础之map补充
点击上方“Go语言进阶学习”,进行关注回复“Go语言”即可获赠Python从入门到进阶共10本电子书今日鸡汤长相思,摧心肝!前言Hey,大家好,我是星期八,咱们接着上次继续说,补充一些map的知识。上节回顾在上节,我们学习了map如何使用。map有两种方式定义,一种是标准
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究