Xorm 临时开关方法

Xorm 提供了一些执行SQL语句的选项。这些选项就像一个开关,可以控制执行 SQL 的行为模式。

  • NoAutoTime()

如果此方法执行,则此次生成的语句中Created和Updated字段将不自动赋值为当前时间

  • NoCache()

如果此方法执行,则此次生成的语句则在非缓存模式下执行

  • NoAutoCondition()

禁用自动根据结构体中的值来生成条件

engine.Where("name = ?", "lunny").Get(&User{Id:1})
// SELECT * FROM user where name='lunny' AND id = 1 LIMIT 1
engine.Where("name = ?", "lunny").NoAutoCondition().Get(&User{Id:1})
// SELECT * FROM user where name='lunny' LIMIT 1
  • UseBool(…string)

当从一个struct来生成查询条件或更新字段时,xorm会判断struct的field是否为0,””,nil,如果为以上则不当做查询条件或者更新内容。因为bool类型只有true和false两种值,因此默认所有bool类型不会作为查询条件或者更新字段。如果可以使用此方法,如果默认不传参数,则所有的bool字段都将会被使用,如果参数不为空,则参数中指定的为字段名,则这些字段对应的bool值将被使用。

  • NoCascade()

是否自动关联查询field中的数据,如果struct的field也是一个struct并且映射为某个Id,则可以在查询时自动调用Get方法查询出对应的数据。

查询单条数据使用Get方法,在调用Get方法时需要传入一个对应结构体的指针,同时结构体中的非空field自动成为查询的条件和前面的方法条件组合在一起查询。如:1) 根据Id来获得单条数据:user := new(Use ...