写了2天的代码,总结一下这两天的一些积累
realm简单来说就是一个可以代替sql的数据库, 特点:易用,快速,跨平台,专业(支持加密,格式化查询,易于移植,支持JSON,流式api,数据变更通知), 可视化
官方网站 https://realm.io/docs/java/latest/ 有需要的朋友,可以去看看
代码:
1、配置
在最外面的那层build.gradle 配置这一段代码
classpath "io.realm:realm-gradle-plugin:5.8.0"
然后在app文件里面的build.gradle 配置这一段代码
apply plugin: 'realm-android'
1、布局
3、代码
3.1创建一个需要保存数据库的类,我写了两个
import io.realm.RealmObject;
/**
* @author Admin
* https://realm.io/docs/java/latest/
*/
public class Dog extends RealmObject {
String name;
String age;
String aihao;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAihao() {
return aihao;
}
public void setAihao(String aihao) {
this.aihao = aihao;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", aihao='" + aihao + '\'' +
'}';
}
}
import io.realm.RealmList;
import io.realm.RealmObject;
/**
* @author Admin
* https://realm.io/docs/java/latest/
*/
public class MyRealmDemo extends RealmObject {
String userName;
String pwd;
Long sessionId;
private RealmList<Integer> Remarks = new RealmList<>();
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public Long getSessionId() {
return sessionId;
}
public void setSessionId(Long sessionId) {
this.sessionId = sessionId;
}
public RealmList<Integer> getRemarks() {
return Remarks;
}
public void setRemarks(RealmList<Integer> remarks) {
Remarks = remarks;
}
@Override
public String toString() {
return "MyRealmDemo{" +
"userName='" + userName + '\'' +
", pwd='" + pwd + '\'' +
", sessionId=" + sessionId +
", Remarks=" + Remarks.size() +
'}';
}
}
3.2 创建一个Application,在onCreate里面进行初始化
import io.realm.Realm;
import io.realm.RealmConfiguration;
/**
* @author Admin
*/
public class MyApplication extends Application {
public static RealmConfiguration config;
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
config = new RealmConfiguration.Builder()
.name("myRealm.realm")
.deleteRealmIfMigrationNeeded()
.build();
Realm.setDefaultConfiguration(config);
//配置默认的数据库
//setDefaultConfiguration(new RealmConfiguration.Builder().build());
// RealmConfiguration configuration = new RealmConfiguration.Builder().build();
}
}
3.3 主界面的实现代码
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import io.realm.Realm;
import io.realm.RealmAsyncTask;
import io.realm.RealmResults;
/**
* @author Admin
*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
TextView txtShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initRealm();
txtShow = findViewById(R.id.txt_show);
findViewById(R.id.btn_add).setOnClickListener(this);
findViewById(R.id.btn_search).setOnClickListener(this);
findViewById(R.id.btn_delete).setOnClickListener(this);
findViewById(R.id.btn_update).setOnClickListener(this);
}
Realm realm;
Integer index = 0;
RealmAsyncTask transaction;
private void initRealm() {
realm = Realm.getInstance(MyApplication.config);
}
/**
* 升级数据库
*/
// class CustomMigration implements RealmMigration {
// @Override
// public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
// RealmSchema schema = realm.getSchema();
// Log.e("MainActivity", "oldVersion:" + oldVersion + "----newVersion" + newVersion);
// if (oldVersion == 1 && newVersion == 2) {
// RealmObjectSchema personSchema = schema.get("Dog");
//
if (!personSchema.hasField("Dog")) {
personSchema.addField("aihao", String.class, FieldAttribute.REQUIRED);
oldVersion++;
}
//
// }
// }
// }
private void addRealm() {
transaction = realm.executeTransactionAsync(realm -> {
MyRealmDemo myDemo = realm.createObject(MyRealmDemo.class);
myDemo.setUserName("名字");
myDemo.setPwd(index + "");
myDemo.getRemarks().add(index);
index++;
}, () -> {
//成功回调
Log.e("MainActivity", "成功回调" + index);
}, error -> {
//失败回调
Log.e("MainActivity", "失败");
});
transaction = realm.executeTransactionAsync(realm -> {
Dog dog = realm.createObject(Dog.class);
dog.setName("哈士奇");
dog.setAge(index + "岁");
dog.setAihao("拆家" + index);
}, () -> {
//成功回调
Log.e("MainActivity", "成功回调" + index);
}, error -> {
//失败回调
Log.e("MainActivity", "失败");
});
}
private void updateRealm() {
transaction = realm.executeTransactionAsync(realm -> {
RealmResults<MyRealmDemo> myList = realm.where(MyRealmDemo.class).findAll();
if (myList != null && myList.size() > 0) {
MyRealmDemo myDemo = myList.get(0);
myDemo.setUserName("换名字");
myDemo.setPwd("小球不得");
myDemo.getRemarks().add(index);
index++;
} else {
Log.e("MainActivity", "updateRealm没得东西,改毛线" + index);
Toast.makeText(this, "updateRealm没得东西,改毛线", Toast.LENGTH_SHORT).show();
}
}, () -> {
//成功回调
Log.e("MainActivity", "成功回调" + index);
}, error -> {
//失败回调
error.printStackTrace();
Log.e("MainActivity", "失败" + error.getMessage());
});
}
private void deleteRealm() {
transaction = realm.executeTransactionAsync(realm -> {
RealmResults<MyRealmDemo> myList = realm.where(MyRealmDemo.class).findAll();
//删除第一个数据
myList.get(0).deleteFromRealm();
// myList.deleteFirstFromRealm();
// //删除最后一个数据
// myList.deleteLastFromRealm();
// //删除位置为1的数据
// myList.deleteFromRealm(1);
// //删除所有数据
// myList.deleteAllFromRealm();
}, () -> {
//成功回调
Log.e("MainActivity", "deleteRealm删球了" + index);
}, error -> {
//失败回调
Log.e("MainActivity", "deleteRealm没删拖");
});
}
private void searchRealm() {
RealmResults<MyRealmDemo> myList = realm.where(MyRealmDemo.class).findAll();
String strText = "";
if (myList != null && myList.size() > 0) {
for (MyRealmDemo myRealmDemo : myList) {
strText += "\n看什么玩意嘛:" + myRealmDemo.toString();
Log.e("MainActivity", "看什么玩意嘛:" + myRealmDemo.toString());
for (int intNum : myRealmDemo.getRemarks()) {
strText += "\n数组里的东西:" + intNum;
Log.e("MainActivity", "数组里的东西:" + intNum);
}
}
} else {
Log.e("MainActivity", "空的,代码错了,看锤子");
}
RealmResults<Dog> dogList = realm.where(Dog.class).findAll();
for (Dog dog : dogList) {
strText += "\n我的狗:" + dog.toString();
Log.e("MainActivity", "我的狗:" + dog.toString());
}
txtShow.setText(strText);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_add:
//添加
addRealm();
break;
case R.id.btn_search:
//查询
searchRealm();
break;
case R.id.btn_delete:
//删除
deleteRealm();
break;
case R.id.btn_update:
//修改
updateRealm();
break;
default:
break;
}
}
@Override
protected void onStop() {
super.onStop();
//取消当前的数据库操作状态
if (transaction != null && !transaction.isCancelled()) {
transaction.cancel();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//关闭连接
realm.close();
}
}
效果图: