Bmob后端云初体验

TT_123456789 2020-08-14 18:29:30 1636

一、Baas简介
Baas,Backend as a Service的简称,即“移动后端即服务”。

“移动后端即服务”是移动平台在“云”这一概念上的一个典型实践。Baas帮助我们把服务器的东西打包,做移动端的人不用再考虑如何写服务器端、如何设计数据库、搭建服务器等,它把这一切放在云端,用户只需要调用API接口,就可以实现各种功能。

Baas源于国外,在国内的发展也很迅速,除了Bmob外,还有原子云、AVOS Cloud、百度frontia、华为PowerApp等,这些平台为开发者提供一系列的云端服务,包括数据存储、消息推送、文件服务、API分析、应用统计、移动官网等,但不同的Bass提供商提供的服务的侧重点不同,今天我们来了解一下如何利用Bmob在云端搭建移动平台的服务器端。

二、Bmob简介
Bmob是国内最早做Bass的平台,它提供的服务主要包括数据服务、短信服务、即时通讯、推送功能、移动支付、云端逻辑和容器服务等。

由于时间限制,我在这里仅对Bmob平台的数据服务作一个简单的介绍和代码实践,Bmob官网为开发者提供了非常完善的文档,想了解其他功能的可以前往学习。

Bmob官网:http://www.bmob.cn/

(一)数据服务基本操作
1.创建JavaBean
首先创建一个JavaBean,用于存储用户数据,该类要继承BmobObject,这样Bmob SDK才能够识别:

public class User extends BmobObject{
//用户名
private String userName;

//密码
private String userPwd;

public String getUserName() {
    return this.userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getUserPwd() {
    return this.userPwd;
}

public void setUserPwd(String userPwd) {
    this.userPwd = userPwd;
}

}

2.添加一行数据
User user = new User();
user.setUserName("sqchen");
user.setPassword("123");
user.save(new SaveListener() {
@Override
public void done(String objectId,BmobException e) {
if(e==null){
Toast.makeText(context,
"数据添加成功!",
Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context,
"数据添加失败!",
Toast.LENGTH_SHORT).show();
}
}
});

当服务器端不存在User表时,系统会根据你的User.class自动帮你创建表,表名和类名一致,除了User.class自身拥有的字段外,还会增加objectId(数据编号)、createdAt、updateAt、ACL字段。如果服务器端已经存在User表和相应的字段,那么我们添加的数据和数据类型也要和服务器端的表一致,以下增删改查操作同上。

当返回的BmobException对象为null时,说明操作成功,否则失败。

3.获取一行数据
BmobQuery userQuery = new BmobQuery();
//增加查询条件
userQuery.addWhereEqualTo("userName","sqchen");
userQuery.findObjects(new FindListener() {
@Override
public void done(List list, BmobException e) {
if(e == null) {
Toast.makeText(context,
"数据获取成功!",
Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context,
"数据获取成功!",
Toast.LENGTH_SHORT).show();
}
}
});

4.修改一行数据
User user = new User();
user.setUserPassword("456");
user.update("objectId",new UpdateListener() {
@Override
public void done(BmobException e) {
if(e == null) {
Toast.makeText(context,
"数据修改成功!",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context,
"数据修改失败!",
Toast.LENGTH_SHORT).show();
}
}
});

帅气的人会发现,上面获取数据时可以指定查询条件进行数据的增加操作,即”addWhereEqualTo()”方法,而对于数据的修改和删除操作,目前Bmob SDK只支持通过objectId(数据编号,)进行更新和删除(当然,获取操作也支持根据objectId进行数据的获取)。

自V3.4.4版本开始,SDK提供了setValue(key,value)方法,用于数据的更新。如:

User user = new User();
user.setValue("userPwd","456");
1
2
5.删除一行数据
User user = new User();
user.setObjectId("objectId");
user.delete(new UpdateListener() {
@Override
public void done(BmobException e) {
if(e == null) {
Toast.makeText(context,
"数据删除成功!",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context,
"数据删除失败!",
Toast.LENGTH_SHORT).show();
}
}
});

以上,就是Bmob数据服务的基本操作。下面就来练习一下吧。

(二)数据服务的实践
1.注册账号

2.创建应用

3.获取密钥

4.导入SDK
在工程的build.gradle中添加,如图:

repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}

 repositories {
     jcenter()
     //Bmob的maven仓库地址--必填
     maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
 }

再在项目的build.gradle中添加,如图:

 compile 'cn.bmob.android:bmob-sdk:3.5.0'

1

5.配置AndroidManifest.xml
添加下列权限:

6.初始化SDK 在启动Activity里的onCreate()生命周期方法里添加下面这一句,第二个参数的值就是在第三步中获取到的Application ID的值。 Bmob.initialize(this, "你的ApplicationID"); 1 7.创建JavaBean MyUser.class public class MyUser extends BmobObject{ //用户名 private String userName; //密码 private String userPwd; public String getUserName() { return this.userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPwd() { return this.userPwd; } public void setUserPwd(String userPwd) { this.userPwd = userPwd; } } 由于当User.class继承自BmobUser.class(BmobSDK中的一个特殊的类)时,拥有特定的含义(在其数据服务的官方文档的“用户管理”中有介绍),而我们只是想通过它来体验一下增删改查操作,所以这里为了区分,将实体类名取做“MyUser.class”。 8.登录界面 ![](https://img-blog.csdn.net/20170322173015991?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjY5MDcyNTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) LoginActivity.class public class LoginActivity extends AppCompatActivity implements View.OnClickListener{ private EditText editName; private EditText editPwd; private Button btnLogin; private Button btnToRegister; private String strName; private String strPwd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //初始化BmobSDK, Bmob.initialize(this, "你的ApplicationID"); setContentView(R.layout.activity_login); initView(); } /** * 控件初始化 */ private void initView() { editName = (EditText) findViewById(R.id.edit_login_name); editPwd = (EditText) findViewById(R.id.edit_login_pwd); btnLogin = (Button) findViewById(R.id.btn_login); btnToRegister = (Button) findViewById(R.id.btn_to_register); btnLogin.setOnClickListener(this); btnToRegister.setOnClickListener(this); } /** * 重写按钮的点击事件 * @param view */ @Override public void onClick(View view) { switch (view.getId()) { case R.id.btn_login: userLogin(); break; case R.id.btn_to_register: toRegister(); break; default: break; } } /** * 用户登录 */ private void userLogin() { BmobQuery userQuery = new BmobQuery(); userQuery.addWhereEqualTo("userName",strName); userQuery.addWhereEqualTo("userPwd",strPwd); userQuery.findObjects(new FindListener() { @Override public void done(List list, BmobException e) { if(e == null) { if(list.size() == 1) { Toast.makeText(getApplicationContext(), "登录成功!", Toast.LENGTH_SHORT).show(); Intent intentMain = new Intent(LoginActivity.this,MainActivity.class); startActivity(intentMain); } else { Toast.makeText(getApplicationContext(), "用户名或密码错误,请重新输入!", Toast.LENGTH_SHORT).show(); cleanInput(); } } else { Toast.makeText(getApplicationContext(), "登录失败,错误码:" + e.getErrorCode(), Toast.LENGTH_SHORT).show(); cleanInput(); } } }); } /** * 去注册 */ private void toRegister() { Intent intentReg = new Intent(LoginActivity.this,RegisterActivity.class); startActivity(intentReg); } /** * 获取用户输入数据 */ private void getInput() { strName = editName.getText().toString(); strPwd = editPwd.getText().toString(); } /** * 清除用户输入数据 */ private void cleanInput() { editName.setText(""); editPwd.setText(""); } } 9.注册界面 ![](https://img-blog.csdn.net/20170322173037733?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjY5MDcyNTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) RegisterActivity.class public class RegisterActivity extends AppCompatActivity { private EditText editName; private EditText editPwd; private Button btnRegister; private String strName; private String strPwd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); initView(); } /** * 控件初始化 */ private void initView() { editName = (EditText) findViewById(R.id.edit_register_name); editPwd = (EditText) findViewById(R.id.edit_register_pwd); btnRegister = (Button) findViewById(R.id.btn_register); btnRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { userRegister(); } }); } /** * 用户注册,即添加一行数据 */ private void userRegister() { getInput(); Log.d("sqchen",strName + strPwd); MyUser mUser = new MyUser(); mUser.setUserName(strName); mUser.setUserPwd(strPwd); mUser.save(new SaveListener() { @Override public void done(String s, BmobException e) { if(e == null) { Toast.makeText(getApplicationContext(), "注册成功!请登录", Toast.LENGTH_SHORT).show(); finish(); } else { Toast.makeText(getApplicationContext(), "注册失败!" + "错误码:" + e.getMessage(), Toast.LENGTH_SHORT).show(); } } }); } /** * 获取用户输入数据 */ private void getInput() { strName = editName.getText().toString(); strPwd = editPwd.getText().toString(); } } 10.登录之后的界面 登录后的主界面就是显示一段文本,没什么特别的。 ![](https://img-blog.csdn.net/20170322173052858?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjY5MDcyNTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) MainActivity.class public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } 总结: 前几天用阿里云+Wordpress搭建了个博客,在请教了几个同学、花费几天时间后终于成功,所以,作为平时的练手项目,使用第三方平台的后端云对开发者来说无疑便利了很多,大大降低了学习成本和代码复杂度,但从另一方面来看,第三方平台的SDK对应用层面的开发进行了代码的封装,而很多业务逻辑其实还是需要我们自己去实现比较好。 原文链接:[点击这里](https://blog.csdn.net/fjnu_se/article/details/64955552 "点击这里")
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
TT_123456789
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区