code: func (statement *Statement) ID(id interface{}) *Statement {
  	idValue := reflect.ValueOf(id)
  	idType := reflect.TypeOf(idValue.Interface())
  
  	switch idType {
  	case ptrPkType:
  		if pkPtr, ok := (id).(*core.PK); ok {
  			statement.idParam = pkPtr
  			return statement
  		}
  	case pkType:
  		if pk, ok := (id).(core.PK); ok {
  			statement.idParam = &pk
  			return statement
  		}
  	}
  
  	switch idType.Kind() {
  	case reflect.String:
  		statement.idParam = &core.PK{idValue.Convert(reflect.TypeOf("")).Interface()}
  		return statement
  	}
  
  	statement.idParam = &core.PK{id}
  	return statement
  }
docs: // ID generate "where id = ? " statement or for composite key "where key1 = ? and key2 = ?"