resolved #209
This commit is contained in:
parent
24600f0f5f
commit
bd994cb726
15
helpers.go
15
helpers.go
|
@ -457,6 +457,21 @@ func query2(db *core.DB, sqlStr string, params ...interface{}) (resultsSlice []m
|
||||||
return rows2Strings(rows)
|
return rows2Strings(rows)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setColumnInt(bean interface{}, col *core.Column, t int64) {
|
||||||
|
v, err := col.ValueOf(bean)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if v.CanSet() {
|
||||||
|
switch v.Type().Kind() {
|
||||||
|
case reflect.Int, reflect.Int64, reflect.Int32:
|
||||||
|
v.SetInt(t)
|
||||||
|
case reflect.Uint, reflect.Uint64, reflect.Uint32:
|
||||||
|
v.SetUint(uint64(t))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func setColumnTime(bean interface{}, col *core.Column, t time.Time) {
|
func setColumnTime(bean interface{}, col *core.Column, t time.Time) {
|
||||||
v, err := col.ValueOf(bean)
|
v, err := col.ValueOf(bean)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
29
session.go
29
session.go
|
@ -2292,6 +2292,13 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
|
||||||
col := table.GetColumn(colName)
|
col := table.GetColumn(colName)
|
||||||
setColumnTime(bean, col, t)
|
setColumnTime(bean, col, t)
|
||||||
})
|
})
|
||||||
|
} else if col.IsVersion && session.Statement.checkVersion {
|
||||||
|
args = append(args, 1)
|
||||||
|
var colName = col.Name
|
||||||
|
session.afterClosures = append(session.afterClosures, func(bean interface{}) {
|
||||||
|
col := table.GetColumn(colName)
|
||||||
|
setColumnInt(bean, col, 1)
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
arg, err := session.value2Interface(col, fieldValue)
|
arg, err := session.value2Interface(col, fieldValue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2340,6 +2347,13 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
|
||||||
col := table.GetColumn(colName)
|
col := table.GetColumn(colName)
|
||||||
setColumnTime(bean, col, t)
|
setColumnTime(bean, col, t)
|
||||||
})
|
})
|
||||||
|
} else if col.IsVersion && session.Statement.checkVersion {
|
||||||
|
args = append(args, 1)
|
||||||
|
var colName = col.Name
|
||||||
|
session.afterClosures = append(session.afterClosures, func(bean interface{}) {
|
||||||
|
col := table.GetColumn(colName)
|
||||||
|
setColumnInt(bean, col, 1)
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
arg, err := session.value2Interface(col, fieldValue)
|
arg, err := session.value2Interface(col, fieldValue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2400,24 +2414,29 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanupProcessorsClosures(&session.afterClosures)
|
cleanupProcessorsClosures(&session.afterClosures)
|
||||||
return res.RowsAffected()
|
return res.RowsAffected()
|
||||||
}
|
}
|
||||||
|
|
||||||
// InsertMulti insert multiple records
|
// InsertMulti insert multiple records
|
||||||
func (session *Session) InsertMulti(rowsSlicePtr interface{}) (int64, error) {
|
func (session *Session) InsertMulti(rowsSlicePtr interface{}) (int64, error) {
|
||||||
sliceValue := reflect.Indirect(reflect.ValueOf(rowsSlicePtr))
|
|
||||||
if sliceValue.Kind() == reflect.Slice {
|
|
||||||
if sliceValue.Len() > 0 {
|
|
||||||
defer session.resetStatement()
|
defer session.resetStatement()
|
||||||
if session.IsAutoClose {
|
if session.IsAutoClose {
|
||||||
defer session.Close()
|
defer session.Close()
|
||||||
}
|
}
|
||||||
return session.innerInsertMulti(rowsSlicePtr)
|
|
||||||
|
sliceValue := reflect.Indirect(reflect.ValueOf(rowsSlicePtr))
|
||||||
|
if sliceValue.Kind() != reflect.Slice {
|
||||||
|
return 0, ErrParamsType
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if sliceValue.Len() <= 0 {
|
||||||
return 0, nil
|
return 0, nil
|
||||||
}
|
}
|
||||||
return 0, ErrParamsType
|
|
||||||
|
return session.innerInsertMulti(rowsSlicePtr)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (session *Session) str2Time(col *core.Column, data string) (outTime time.Time, outErr error) {
|
func (session *Session) str2Time(col *core.Column, data string) (outTime time.Time, outErr error) {
|
||||||
|
|
Loading…
Reference in New Issue