insertAll method

Future<int> insertAll({
  1. required String table,
  2. required List<Map<String, dynamic>> insertData,
  3. dynamic replace = false,
  4. dynamic debug = false,
})

return affectedRows

await db.insertAll(
  table: 'table',
  insertData: [
      {
        'telphone': '13888888888',
        'create_time': 1111111,
        'update_time': 12121212,
        'email': 'biner@dd.com'
      },
      {
        'telphone': '13881231238',
        'create_time': 324234,
        'update_time': 898981,
        'email': 'xxx@dd.com'
      }
]);

Implementation

Future<int> insertAll({
  required String table,
  required List<Map<String, dynamic>> insertData,
  replace = false,
  debug = false,
}) async {
  if (insertData.isEmpty) {
    throw ('insertData.length!=0');
  }
  table = _tableParse(table);
  List<String> _fields = [];
  List<String> _values = [];
  insertData.first.forEach((key, value) => _fields.add('`$key`'));
  insertData.forEach((val) {
    List _t = [];
    val.forEach((key, value) {
      if (value is num) {
        _t.add(value);
      } else {
        if (value is String) {
          _t.add('\'${sqlEscapeString(value)}\'');
        } else {
          _t.add('\'$value\'');
        }
      }
    });
    _values.add('(${_t.join(',')})');
  });
  String _fieldsString = _fields.join(',');
  String _valuesString = _values.join(',');
  String _sql =
      '${replace ? 'REPLACE' : 'INSERT'} INTO $table ($_fieldsString) VALUES $_valuesString';
  ResultFormat result = await query(_sql, debug: debug);
  return result.affectedRows;
}