• Exist系列方法
  • 与Get的区别
  • 建议

    Exist系列方法

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

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

    与Get的区别

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

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

    建议

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

    建议直接使用Get方法。

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