go mysql 条件查询_golang基础-和mysql打交道

mysql简介

mysql是关系型数据库RDBMS(Relational database management system)的典型代表,也是后台开发中打交道最多的一个组件。

go-sql-driver访问数据库

插入操作

查询操作

这里会发现,当字段比较多,有二三十个,sql语句都需要自己写,同时scan还得指定每一个字段去接收,如果类型一样的错位了,就是一个难以排查的事故。 同时,sql语句太长,也不好维护。在大型项目开发过程中,几乎所有团队都会选择用orm。

golang 的gorm

什么是orm

ORM全称是:Object Relational Mapping(对象关系映射),其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来。举例来说就是,我定义一个对象,那就对应着一张表,这个对象的实例,就对应着表中的一条记录。

连接数据库

创建记录

查询记录

查询条件

Save命令

db.Save(&data) gorm支持一个Save命令,其语意是当model中Id主键有值时,更新该model。无值时创建一条。如果是需要先从数据库读model,再更新写入,就很适合用Save操作。

gorm 特性

链式组合

gromdb是链式的结构: 每个操作返回的都是gorm.DB db.Where().Limit().Offset()

在业务开发中,可以灵活运用,比如有type类型,status状态两个字段,如果填了才过滤,不填就返回所有的,可以按下面这样写:

callback

callback是一个不得不提的能力,顾名思义,回调,即 通过它可以方便地对gorm进行二次封装。目前gorm 支持如下callback

BeforeSave : Save操作之前

BeforeCreate :Create操作之前

AfterUpdate:Update操作之后

AfterSave:Save操作之后

BeforeDelete:Delete操作之前

AfterDelete:Delete操作之后

AfterFind:Find之后

比如,如果有加密需求,就可以在beforeCreate时运用加密。 在afterFind运用解秘。以下是一个简单的条件判断示例:

如果callback中有失败,那么整个事物都会回滚。

开发模式推荐

单独建一个model文件夹,一个model一个文件,可以理解为一个表一个文件。 在其中用类型的方法,封装好针对这个model直接访问的方法。 同时定义个对外暴露的变量Nsp,外面直接通过这个Nsp访问方法。 如果有针对多表的访问和联合,应该再封装一个更高层。这样代码结构会比较清晰。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值