package net.dev123.yibo.db; import java.util.ArrayList; import java.util.List; import net.dev123.yibo.common.Constants; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; public abstract class BaseDao<T> implements CursorDataExtractor<T> { protected Context context; protected DBHelper dbHelper; public BaseDao(Context context) { if (null == context) { throw new NullPointerException("context should not be null"); } this.context = context; this.dbHelper = DBHelper.getInstance(context); } public List<T> find(String sql, int pageIndex, int pageSize) { int offset = (pageIndex - 1) * pageSize; sql = "select * from (" + sql + ")" + " limit " + pageSize + " offset " + offset; return find(sql); } public List<T> find(String sql) { SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); return find(sqLiteDatabase, sql); } List<T> find(SQLiteDatabase sqLiteDatabase, String sql) { if (Constants.DEBUG) { Log.d("SQLiteDatabase Query", sql); } List<T> resultList = null; Cursor cursor = sqLiteDatabase.rawQuery(sql, null); if (cursor != null) { if (cursor.moveToFirst()) { resultList = new ArrayList<T>(); do { resultList.add(extractData(sqLiteDatabase, cursor)); } while (cursor.moveToNext()); } cursor.deactivate(); cursor.close(); cursor = null; } return resultList; } public T query(String sql) { SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); return query(sqLiteDatabase, sql); } T query(SQLiteDatabase sqLiteDatabase , String sql) { T t = null; Cursor cursor = sqLiteDatabase.rawQuery(sql, null); if (cursor != null) { if (cursor.moveToFirst()) { t = extractData(sqLiteDatabase, cursor); } cursor.deactivate(); cursor.close(); cursor = null; } return t; } /** * 检查参数是否为空 * * @param account */ protected static boolean isNull(Object object) { if (object == null) { return true; } if (object instanceof List<?>) { return ((List<?>)object).size() == 0; } return false; } }