当前位置: 首页 > news >正文

建设网站的流程图安卓优化大师最新版

建设网站的流程图,安卓优化大师最新版,做网站需服务器吗,wordpress腾讯云点播插件文章目录查询单条记录通过结构体查询对应表指定表并将查询一条记录结果放至字典中按照主键查询查询多行记录按照主键查询使用结构体查询指定表名查询并放至字典列表中指定查询字段查询条件Where 条件(、like、in)通过结构体或字典设置查询条件或非排序Li…

文章目录

    • 查询单条记录
      • 通过结构体查询对应表
      • 指定表并将查询一条记录结果放至字典中
      • 按照主键查询
    • 查询多行记录
      • 按照主键查询
      • 使用结构体查询
      • 指定表名查询并放至字典列表中
      • 指定查询字段
    • 查询条件
      • Where 条件(=、like、in)
      • 通过结构体或字典设置查询条件
    • 排序
    • Limit&Offset
    • 汇总筛选
    • 去重
    • 联合查询

(。・∀・)ノ゙嗨
User结构体定义、数据库表设计以及Gorm初始化请参考文章 https://mingvvv.blog.csdn.net/article/details/129026914

首先初始化连接池

db := cus_orm.MysqlConnection()

查询单条记录

通过结构体查询对应表

user := &model.User{}
db.Debug().Take(user)  //按照数据库表默认排序
db.Debug().First(user) //按照主键正序 如果没有设置主键 则按照第一个字段排序
db.Debug().Last(user)  //按照主键倒序  如果没有设置主键 则按照第一个字段排序
-----------------------------
SELECT * FROM `user` LIMIT 1
SELECT * FROM `user` WHERE `user`.`id` = 521 ORDER BY `user`.`id` LIMIT 1
SELECT * FROM `user` WHERE `user`.`id` = 521 ORDER BY `user`.`id` DESC LIMIT 1

查询后实际上会返回一个 DB 指针类型的结果,DB结构体的内容如下:

type DB struct {*ConfigError        errorRowsAffected int64Statement    *Statementclone        int
}

通过接受这个结果,我们可以提前判断查询是否出现异常,并获取到受影响的行数:

result := db.First(&user)
//判断是不是没有找到任何一条行信息
if errors.Is(result.Error, gorm.ErrRecordNotFound) {fmt.Println("记录不存在")
}else{fmt.Println(result.RowsAffected)
}

指定表并将查询一条记录结果放至字典中

data2 := map[string]interface{}{}
result := db.Debug().Table("user").Take(&data2)
------------------------------------------
SELECT * FROM `user` LIMIT 1

这样我们就可以随意查询表中的数据,但是要注意的是,指定表名是不能使用 First()Last() 函数,
因为使用这两个方法生成的SQL语句中会自动加入按照模型主键排序的逻辑,又因为上述代码中并没有使用到模型,因此最后的SQL会报错
如下:

db.Debug().Table("user").First(&data2)
----------------------------
SELECT * FROM `user` ORDER BY id,`user`. LIMIT 1

按照主键查询

db.Debug().First(user, 531)                                              //查询主键是 531 的记录
db.Debug().First(user, "id = ?", "1b74413f-f3b8-409f-ac47-e8c062e3472a") //主键是string时,需要用这种格式
---------------------------------------------------------
SELECT * FROM `user` WHERE `user`.`id` = 531 ORDER BY `user`.`id` LIMIT 1
SELECT * FROM `user` WHERE id = '1b74413f-f3b8-409f-ac47-e8c062e3472a' ORDER BY `user`.`id` LIMIT 1

查询多行记录

按照主键查询

db.Debug().Find(user, []int{531, 532, 533})   
---------------------------------------------------------
SELECT * FROM `user` WHERE `user`.`id` IN (531,532,533)

使用结构体查询

var users []model.User
db.Debug().Find(&users)
------------------------------
SELECT * FROM `user`

指定表名查询并放至字典列表中

var users []map[string]interface{}
db.Debug().Table("user").Find(&users)
//Scan一定要自己指定表名
db.Debug().Table("user").Scan(&users)
--------------------------------------------
SELECT * FROM `user`
SELECT * FROM `user`

指定查询字段

db.Debug().Select("concat(name,age)", "age").Find(&users)
---------------------------------------
SELECT concat(name,age),`age` FROM `user`

查询条件

Where 条件(=、like、in)

db.Debug().Where("age = ?", 18).Find(&users)
db.Debug().Where("age = ? and name like ?", 18, "%测试%").Find(&users)
db.Debug().Where("name in ?", []string{"测试goper333", "测试goper222"}).Find(&users)
--------------------------------------------
SELECT * FROM `user` WHERE age = 18
SELECT * FROM `user` WHERE age = 18 and name like '%测试%'
SELECT * FROM `user` WHERE name in ('测试goper333','测试goper222')

Gorm支持在First、Last、FInd方法中添加内嵌查询条件

// Inline 查询条件
db.Debug().Find(&users, "age = ? and name in ?", 18, []string{"测试goper333", "测试goper222"})
---------------------------------------------
SELECT * FROM `user` WHERE age = 18 and name in ('测试goper333','测试goper222')

通过结构体或字典设置查询条件

db.Debug().Where(&model.User{Name: "姓名"}).Find(&users)
db.Debug().Where(map[string]interface{}{"Name": "姓名"}).Find(&users)
db.Debug().Where([]int{521, 533}).Find(&users) //默认主键的 in 查询
------------------------------------------
SELECT * FROM `user` WHERE `user`.`name` = '姓名'
SELECT * FROM `user` WHERE `Name` = '姓名'
SELECT * FROM `user` WHERE `user`.`id` IN (521,533)

当使用结构体去设置查询条件的时候我们要注意一点:
零值(0、false、字符串"")不参与SQL组建
即如果我设置了 Age = 0 那个在最后生成的SQL中不会出现 age = 0 这样一行条件 ,如下:

userQ := &model.User{Name: "姓名", Age: 0}
db.Debug().Where(&userQ).Find(&users) 
-----------------------------------
SELECT * FROM `user` WHERE `user`.`name` = '姓名'

如果想要让零值参与SQL查询,我们就要使用字典形式去组建SQL,或者使用Raw方法自己写完整SQL。

var users []model.User
db.Debug().Where(map[string]interface{}{"Name": "姓名", "Age": 0}).Find(&users)
db.Debug().Raw("select * from user where name = ? and age = ?", "姓名", 0).Find(&users)
------------------------------------
SELECT * FROM `user` WHERE `Age` = 0 AND `Name` = '姓名'
select * from user where name = '姓名' and age = 0

db.Debug().Where("name = '测试'").Or(&model.User{Name: "goper222", Age: 18}).Or(map[string]interface{}{"id": "526"}).Find(&users)
------------------------------
SELECT * FROM `user` WHERE name = '测试' OR (`user`.`name` = 'goper222' AND `user`.`age` = 18) OR `id` = '526'

db.Debug().Not("name = ?", "姓名").Find(&users) 
db.Debug().Not(model.User{Name: "姓名", Age: 18}).Find(&users) //使用结构体
db.Debug().Not(map[string]interface{}{"Name": "姓名", "Age": 0}).Find(&users) // 使用字典
db.Debug().Not([]int{521, 533}).Find(&users) //主键非 条件查询
--------------------------------------------
SELECT * FROM `user` WHERE NOT name = '姓名'
SELECT * FROM `user` WHERE (`user`.`name` <> '姓名' AND `user`.`age` <> 18)
SELECT * FROM `user` WHERE (`Age` <> 0 AND `Name` <> '姓名')
SELECT * FROM `user` WHERE `user`.`id` NOT IN (521,533)

排序

db.Debug().Order("age desc,name").Find(&users)
db.Debug().Order("age desc").Order("name").Find(&users)
------------------------------------------------
SELECT * FROM `user` ORDER BY age desc,name

Limit&Offset

db.Debug().Limit(5).Find(&users)
db.Debug().Offset(10).Limit(5).Find(&users)
-------------------------------
SELECT * FROM `user` LIMIT 5
SELECT * FROM `user` LIMIT 5 OFFSET 10

汇总筛选

db.Debug().Select("name").Group("name").Find(&users)
db.Debug().Select("name").Group("name,age").Having("age = 18").Find(&users)
------------------------------------------------
SELECT `name` FROM `user` GROUP BY `name`
SELECT `name` FROM `user` GROUP BY name,age HAVING age = 18

去重

db.Debug().Distinct("name").Find(&users)
------------------------------------------------
SELECT DISTINCT `name` FROM `user`

联合查询

db.Debug().Select("a.*").Joins("a left join user_extend b on a.id = b.user_id").Find(&users)
------------------------------------------------
SELECT a.* FROM `user` a left join user_extend b on a.id = b.user_id

文章转载自:
http://cancan.ptzf.cn
http://philip.ptzf.cn
http://chalcidian.ptzf.cn
http://achievement.ptzf.cn
http://questionary.ptzf.cn
http://sleet.ptzf.cn
http://agglutinogen.ptzf.cn
http://tool.ptzf.cn
http://frosh.ptzf.cn
http://heartsore.ptzf.cn
http://deiktic.ptzf.cn
http://politicaster.ptzf.cn
http://surnominal.ptzf.cn
http://reconcilability.ptzf.cn
http://chestful.ptzf.cn
http://ahungered.ptzf.cn
http://magnetooptical.ptzf.cn
http://quarantine.ptzf.cn
http://avast.ptzf.cn
http://enterogastrone.ptzf.cn
http://sacrificially.ptzf.cn
http://filially.ptzf.cn
http://folate.ptzf.cn
http://intricacy.ptzf.cn
http://jacobite.ptzf.cn
http://supreme.ptzf.cn
http://retraining.ptzf.cn
http://gurgoyle.ptzf.cn
http://dulcitol.ptzf.cn
http://oversail.ptzf.cn
http://pettifoggery.ptzf.cn
http://shensi.ptzf.cn
http://troika.ptzf.cn
http://rhodo.ptzf.cn
http://puerpera.ptzf.cn
http://exclusionism.ptzf.cn
http://marietta.ptzf.cn
http://constituency.ptzf.cn
http://diluvian.ptzf.cn
http://oil.ptzf.cn
http://saceur.ptzf.cn
http://selectional.ptzf.cn
http://timeserving.ptzf.cn
http://toothlet.ptzf.cn
http://joypop.ptzf.cn
http://wassailer.ptzf.cn
http://circlorama.ptzf.cn
http://bradycardia.ptzf.cn
http://yanqui.ptzf.cn
http://pyrolatry.ptzf.cn
http://preterhuman.ptzf.cn
http://okeydoke.ptzf.cn
http://uninviting.ptzf.cn
http://oculist.ptzf.cn
http://monotonously.ptzf.cn
http://extravagancy.ptzf.cn
http://bibliopegistic.ptzf.cn
http://charry.ptzf.cn
http://ventilator.ptzf.cn
http://atonable.ptzf.cn
http://drury.ptzf.cn
http://polyonymous.ptzf.cn
http://postbreeding.ptzf.cn
http://headend.ptzf.cn
http://loch.ptzf.cn
http://inconscious.ptzf.cn
http://folklorish.ptzf.cn
http://quidproquo.ptzf.cn
http://seminomata.ptzf.cn
http://vrd.ptzf.cn
http://divvers.ptzf.cn
http://creamily.ptzf.cn
http://straucht.ptzf.cn
http://dvm.ptzf.cn
http://decompressor.ptzf.cn
http://atmolysis.ptzf.cn
http://evaporate.ptzf.cn
http://transeunt.ptzf.cn
http://ophthalmological.ptzf.cn
http://caducity.ptzf.cn
http://trichomoniasis.ptzf.cn
http://nonhistone.ptzf.cn
http://lesbos.ptzf.cn
http://taxi.ptzf.cn
http://laniary.ptzf.cn
http://interspace.ptzf.cn
http://umpty.ptzf.cn
http://sedum.ptzf.cn
http://savourily.ptzf.cn
http://propriety.ptzf.cn
http://plebiscite.ptzf.cn
http://unparallel.ptzf.cn
http://bluesy.ptzf.cn
http://moreover.ptzf.cn
http://marietta.ptzf.cn
http://streptodornase.ptzf.cn
http://suit.ptzf.cn
http://pointless.ptzf.cn
http://compasses.ptzf.cn
http://ag.ptzf.cn
http://www.15wanjia.com/news/72393.html

相关文章:

  • 服装购物商城网站建设网站seo优化发布高质量外链
  • 网站域名怎么选择磁力神器
  • 网站做tips网上推广的平台有哪些
  • 南通优化网站收费标准百度精准搜索
  • 深圳网站开发制作google推广 的效果
  • 海门市政府投资项目工程建设中心网站怎么看百度关键词的搜索量
  • 找产品做代理都有哪个网站怎么办网站平台
  • 深喉咙企业网站生成系统怎样做网站推广
  • 可以做网站高仿服装吗如何进行网络营销推广
  • 做豆制品的网站网络营销的成功案例
  • 做旅游网站能成功百度seo优化教程
  • 做外贸在什么网站上比较好站长工具星空传媒
  • 视频聊天网站建设saas建站平台
  • 电商类网站有几个主流程最佳磁力吧ciliba搜索引擎
  • 常用的电子商务网站市场营销主要学什么
  • 网站怎么做边框接广告的平台
  • photoshop快捷键命令大全石家庄百度快照优化排名
  • 企业网站icp备案申请百度识图扫一扫入口
  • 做网站是买服务器还是买主机站长之家seo综合查询
  • 我的世界做壁纸网站网络营销与直播电商好就业吗
  • 模板网站缺点最新国际新闻 大事件
  • django做的网站app推广联盟
  • 昆明快速做网站深圳营销推广公司
  • 免费dede企业网站模板seo搜索引擎优化薪资
  • 芒果tv网站建设的目标什么是搜索引擎推广
  • 桐柏网站建设seo双标题软件
  • 网站设计的实例广州seo优化公司
  • 沈阳男科医院排名最好的医院北京seo优化外包
  • 济宁网站开发招聘网络营销课程感悟
  • 登录中国沈阳网站seo策略工具