This repository has been archived on 2022-04-14. You can view files and clone it, but cannot push or open issues or pull requests.
manual-zh-CN/chapter-05/10.exist.md
2018-01-03 10:52:26 +08:00

1.4 KiB
Raw Permalink Blame History

Exist系列方法

判断某个记录是否存在可以使用Exist, 相比GetExist性能更好。

has, err := testEngine.Exist(new(RecordExist))
// SELECT * FROM record_exist LIMIT 1
has, err = testEngine.Exist(&RecordExist{
		Name: "test1",
	})
// SELECT * FROM record_exist WHERE name = ? LIMIT 1
has, err = testEngine.Where("name = ?", "test1").Exist(&RecordExist{})
// SELECT * FROM record_exist WHERE name = ? LIMIT 1
has, err = testEngine.SQL("select * from record_exist where name = ?", "test1").Exist()
// select * from record_exist where name = ?
has, err = testEngine.Table("record_exist").Exist()
// SELECT * FROM record_exist LIMIT 1
has, err = testEngine.Table("record_exist").Where("name = ?", "test1").Exist()
// SELECT * FROM record_exist WHERE name = ? LIMIT 1

与Get的区别

Get与Exist方法返回值都为bool和error如果查询到实体存在则Get方法会将查到的实体赋值给参数

user := &User{Id:1}
has,err := testEngine.Get(user)	// 执行结束后user会被赋值为数据库中Id为1的实体
has,err = testEngine.Exist(user)	// user中仍然是初始声明的user不做改变

建议

如果你的需求是:判断某条记录是否存在,若存在,则返回这条记录。

建议直接使用Get方法。

如果仅仅判断某条记录是否存在则使用Exist方法Exist的执行效率要比Get更高。