最近想搞一下基於Bmob平台的應用開發,發現確實挺方便的,很好的解決了服務器后台部署的難題,
但是也有一些弊端,數據架構的可擴展性不強,做一些數據結構簡單的應用還是可以的。
package com.bmob.utils; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import android.content.Context; import android.util.Log; import android.widget.Toast; import cn.bmob.v3.BmobObject; import cn.bmob.v3.BmobQuery; import cn.bmob.v3.listener.DeleteListener; import cn.bmob.v3.listener.FindCallback; import cn.bmob.v3.listener.FindListener; import cn.bmob.v3.listener.GetListener; import cn.bmob.v3.listener.SaveListener; import cn.bmob.v3.listener.UpdateListener; import com.bmob.base.BombApplication; /** * @Date 2016-6-12 下午2:17:55 * @Author Arvin * @Description Bmob數據處理工具類 */ public class BmobUtils { public static final String TAG = "BmobUtils"; public static Context mContext = BombApplication.getInstance(); public static List<BmobObject> queryBeans = new ArrayList<BmobObject>(); public static BmobObject bmobObject = new BmobObject(); /*****************************數據保存************************/ /** * @Description 批量數據保存 * @param List<BmobObject> * @return void * @throws */ public static void saveBatch(List<BmobObject> list) { new BmobObject().insertBatch(mContext, list, new SaveListener() { @Override public void onSuccess() { showToast("批量增加成功"); } @Override public void onFailure(int arg0, String arg1) { showToast(arg1 + "批量增加失敗"); } }); } /** * @Description 單一數據保存 * @param BmobObject * @return return_type * @throws */ public static void saveSignle(BmobObject object) { object.save(mContext, new SaveListener() { @Override public void onSuccess() { showToast("增加成功"); } @Override public void onFailure(int arg0, String arg1) { showToast(arg1 + "增加失敗"); } }); } /*****************************查詢*************************/ /** * @Description 查詢所有數據並封裝(不支持指定tabName) * @param null * @return void * @throws */ public static void queryTable() { BmobQuery<BmobObject> query = new BmobQuery<BmobObject>(); query.findObjects(mContext, new FindListener<BmobObject>() { @Override public void onSuccess(List<BmobObject> objects) { // TODO Auto-generated method stub showToast("查詢成功"); } @Override public void onError(int arg0, String arg1) { showToast(arg1 + "查詢失敗"); } }); } /** * @Description 查詢指定table中所有數據解析並封裝(解析JSONArray) * @param null * @return void * @throws */ public static void queryData(String tabName){ BmobQuery query = new BmobQuery(tabName); query.findObjects(mContext , new FindCallback() { @Override public void onSuccess(JSONArray jsonArray) { //注意:查詢的結果是JSONArray,需要自行解析 Log.i(TAG, "查詢成功:"+jsonArray.length()); } @Override public void onFailure(int arg0, String arg1) { Log.i(TAG, "查詢失敗:"+arg1); } }); } /** * @Description 傳值,指定字段進行條件查詢(不支持指定tabName) * @param String key , String searchVal * @return void * @throws */ public static void queryName(String key , String searchVal) { if (searchVal.equals("")) { return; } BmobQuery<BmobObject> query = new BmobQuery<BmobObject>(); query.addWhereEqualTo(key, searchVal); //條件查詢 query.findObjects(mContext, new FindListener<BmobObject>() { @Override public void onSuccess(List<BmobObject> objects) { showToast("查詢成功"); //實現數據封裝的邏輯 } @Override public void onError(int arg0, String arg1) { // TODO Auto-generated method stub showToast(arg1+"查詢失敗"); } }); } /** * @Description 根據objectId ,查詢單條數據(不支持指定tabName) * @param String objectId * @return return_type * @throws */ public static void querySingleData(String objectId){ BmobQuery<BmobObject> query = new BmobQuery<BmobObject>(); query.getObject(mContext, objectId, new GetListener<BmobObject>() { @Override public void onSuccess(BmobObject object) { // TODO Auto-generated method stub showToast("查詢成功:"); //實現數據封裝的邏輯 } @Override public void onFailure(int code, String arg0) { // TODO Auto-generated method stub showToast("查詢失敗:" + arg0); } }); } /** * @Description 查詢多條數據 /根據列值查詢 (不支持指定tabName) * @param String key , String queryVal * @return return_type * @throws */ public static void queryMultiData(String key , String queryVal){ BmobQuery<BmobObject> query = new BmobQuery<BmobObject>(); query.addWhereEqualTo(key, queryVal); //條件查詢 //返回50條數據,如果不加上這條語句,默認返回10條數據 query.setLimit(50); //執行查詢方法 query.findObjects(mContext, new FindListener<BmobObject>() { @Override public void onSuccess(List<BmobObject> objects) { // TODO Auto-generated method stub showToast("查詢成功:共" + objects.size() + "條數據。"); //實現數據封裝的邏輯 } @Override public void onError(int code, String msg) { // TODO Auto-generated method stub showToast("查詢失敗:" + msg); } }); } /** * @Description 查詢指定列 (不支持指定tabName) * @param String key * @return void * @throws */ public static void queryRow(String key){ //只返回Lost表的objectId這列的值 BmobQuery<BmobObject> bmobQuery = new BmobQuery<BmobObject>(); bmobQuery.addQueryKeys(key); bmobQuery.findObjects(mContext, new FindListener<BmobObject>() { @Override public void onSuccess(List<BmobObject> objects) { // TODO Auto-generated method stub showToast("查詢成功:共" + objects.size() + "條數據。"); //實現數據封裝的邏輯 } @Override public void onError(int code, String msg) { // TODO Auto-generated method stub showToast("查詢失敗:" + msg); } }); } /** * @Description 對數據進行排序 * @param BmobQuery<BmobObject> query , String key * @return void * @throws */ public static void orderData(BmobQuery<BmobObject> query , String key){ // 根據score字段升序顯示數據 query.order("key"); // 根據score字段降序顯示數據 query.order("-key"); } /********************************數據更新******************************/ /** * @Description 批量更新數據 * @param List<BmobObject> list * @return void * @throws */ public static void updateBatch(List<BmobObject> list) { if(list.size() == 0){ showToast("數據不存在,請先插入"); return; } new BmobObject().updateBatch(mContext, list, new UpdateListener() { @Override public void onSuccess() { showToast("批量修改成功"); } @Override public void onFailure(int arg0, String arg1) { showToast(arg1 + "批量修改失敗"); } }); } /** * @Description 根據指定的objectId修改元素 * @param BmobObject , String * @return void * @throws */ public static void updateById(BmobObject bmobObject , String objectId){ bmobObject.update(mContext, objectId, new UpdateListener() { @Override public void onSuccess() { showToast("修改成功"); } @Override public void onFailure(int arg0, String arg1) { showToast(arg1 + "修改失敗"); } }); } /** * @Description 修改更新BmobObject對象 * @param BmobObject * @return void * @throws */ public static void updateObject(BmobObject bmobObject){ bmobObject.update(mContext , new UpdateListener() { @Override public void onSuccess() { // TODO Auto-generated method stub showToast("修改成功"); } @Override public void onFailure(int arg0, String arg1) { // TODO Auto-generated method stub showToast(arg1 + "修改失敗"); } }); } /***********************************數據刪除***********************************/ /** * @Description 批量刪除數據 * @param tags * @return return_type * @throws */ public static void deleteBatch(List<BmobObject> objects) { new BmobObject().deleteBatch(mContext, objects, new DeleteListener() { @Override public void onSuccess() { showToast("批量刪除成功"); } @Override public void onFailure(int arg0, String arg1) { showToast(arg1 + "批量刪除失敗"); } }); } /** * @Description 根據objectId刪除BmobObject對象 * @param BmobObject ,String * @return void * @throws */ public static void deleteById(BmobObject object , String objectId) { //根據指定的objectId修改元素 object.delete(mContext , objectId , new DeleteListener() { @Override public void onSuccess() { showToast("刪除成功"); } @Override public void onFailure(int arg0, String arg1) { showToast(arg1 + "刪除失敗"); } }); } /** * @Description 刪除BmobObject對象 * @param BmobObject * @return void * @throws */ public static void deleteData(BmobObject object) { object.delete(mContext, new DeleteListener() { @Override public void onSuccess() { showToast("刪除成功"); } @Override public void onFailure(int arg0, String arg1) { showToast("刪除失敗"); } }); } /** * @Description 顯示Toast信息(msg) * @param tags * @return return_type * @throws */ public static void showToast(String msg){ Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show(); } /** * @Description 顯示Toast信息(id) * @param tags * @return return_type * @throws */ public static void showToast(int resId){ Toast.makeText(mContext, resId, Toast.LENGTH_SHORT).show(); } }