func (m *default{{.upperStartCamelObject}}Model) Insert(ctx context.Context, data *{{.upperStartCamelObject}}) (sql.Result,error) { {{if .withCache}}{{.keys}} ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { query := fmt.Sprintf("INSERT INTO %s (%s) VALUES ({{.expression}})", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet) return conn.ExecCtx(ctx, query, {{.expressionValues}}) }, {{.keyValues}}){{else}}query := fmt.Sprintf("INSERT INTO %s (%s) VALUES ({{.expression}})", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet) ret,err:=m.conn.ExecCtx(ctx, query, {{.expressionValues}}){{end}} return ret,err } func (m *default{{.upperStartCamelObject}}Model) InsertWithTx(ctx context.Context, session sqlx.Session, data *{{.upperStartCamelObject}}) (sql.Result,error) { {{if .withCache}}{{.keys}} ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { query := fmt.Sprintf("INSERT INTO %s (%s) VALUES ({{.expression}})", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet) return session.ExecCtx(ctx, query, {{.expressionValues}}) }, {{.keyValues}}){{else}}query := fmt.Sprintf("INSERT INTO %s (%s) VALUES ({{.expression}})", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet) ret,err:=session.ExecCtx(ctx, query, {{.expressionValues}}){{end}} return ret,err } func (m *default{{.upperStartCamelObject}}Model) BatchInsert(ctx context.Context, dataList []*{{.upperStartCamelObject}}) error { if len(dataList) == 0 { return nil } {{if .withCache}}keys := make([]string, 0, len(dataList)) {{end}}valueSets := make([]string, 0, len(dataList)) args := make([]interface{}, 0) for _, data := range dataList { valueSets = append(valueSets, "({{.expression}})") args = append(args, {{.expressionValues}}) {{if .withCache}}{{.keys}} keys = append(keys, {{.keyValues}}) {{end}} } query := fmt.Sprintf("INSERT INTO %s (%s) VALUES %s", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet, strings.Join(valueSets, ",")) {{if .withCache}}_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { return conn.ExecCtx(ctx, query, args...) }, keys...){{else}}_, err := m.conn.ExecCtx(ctx, query, args...){{end}} return err } func (m *default{{.upperStartCamelObject}}Model) BatchInsertWithTx(ctx context.Context, session sqlx.Session, dataList []*{{.upperStartCamelObject}}) error { if len(dataList) == 0 { return nil } {{if .withCache}}keys := make([]string, 0, len(dataList)) {{end}}valueSets := make([]string, 0, len(dataList)) args := make([]interface{}, 0) for _, data := range dataList { valueSets = append(valueSets, "({{.expression}})") args = append(args, {{.expressionValues}}) {{if .withCache}}{{.keys}} keys = append(keys, {{.keyValues}}) {{end}} } query := fmt.Sprintf("INSERT INTO %s (%s) VALUES %s", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet, strings.Join(valueSets, ",")) {{if .withCache}}_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { return session.ExecCtx(ctx, query, args...) }, keys...){{else}}_, err := session.ExecCtx(ctx, query, args...){{end}} return err } {{if not .withCache}} func (m *default{{.upperStartCamelObject}}Model) TransactCtx(ctx context.Context, fn func(context.Context, sqlx.Session) error) error { return m.conn.TransactCtx(ctx, fn) } {{end}}