|
|
@@ -81,6 +81,41 @@ func (session *Session) Sum(bean interface{}, columnName string) (float64, error
|
|
|
return 0, err
|
|
|
}
|
|
|
|
|
|
+// SumInt call sum some column. bean's non-empty fields are conditions.
|
|
|
+func (session *Session) SumInt(bean interface{}, columnName string) (int64, error) {
|
|
|
+ defer session.resetStatement()
|
|
|
+ if session.IsAutoClose {
|
|
|
+ defer session.Close()
|
|
|
+ }
|
|
|
+
|
|
|
+ var sqlStr string
|
|
|
+ var args []interface{}
|
|
|
+ var err error
|
|
|
+ if len(session.Statement.RawSQL) == 0 {
|
|
|
+ sqlStr, args, err = session.Statement.genSumSQL(bean, columnName)
|
|
|
+ if err != nil {
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sqlStr = session.Statement.RawSQL
|
|
|
+ args = session.Statement.RawParams
|
|
|
+ }
|
|
|
+
|
|
|
+ session.queryPreprocess(&sqlStr, args...)
|
|
|
+
|
|
|
+ var res int64
|
|
|
+ if session.IsAutoCommit {
|
|
|
+ err = session.DB().QueryRow(sqlStr, args...).Scan(&res)
|
|
|
+ } else {
|
|
|
+ err = session.Tx.QueryRow(sqlStr, args...).Scan(&res)
|
|
|
+ }
|
|
|
+
|
|
|
+ if err == sql.ErrNoRows || err == nil {
|
|
|
+ return res, nil
|
|
|
+ }
|
|
|
+ return 0, err
|
|
|
+}
|
|
|
+
|
|
|
// Sums call sum some columns. bean's non-empty fields are conditions.
|
|
|
func (session *Session) Sums(bean interface{}, columnNames ...string) ([]float64, error) {
|
|
|
defer session.resetStatement()
|