最好的android ORM有以下五种,OrmLite,SugarORM,GreenDAO,Active Android,Realm。
详细说一下ActiveAndroid的使用方法。
下载jar包
从下面的网址下载activeandroid-3.0.jar。
https://github.com/pardom/ActiveAndroid/downloads- . 开发环境搭建。开发环境使用Android Studio,步骤如下:
(1)创建一个Android项目。
(2)将jar包拷贝到libs文件夹下。
(3)右键该jar包,选择 “Add as a Library…”。 - AndroidManifest.xml中添加权限。在Application节点下添加meta-data子节点。其中AA_DB_NAME对应于数据库名称,AA_DB_VERSION对应于数据库版本。
<meta-data android:name="AA_DB_NAME" android:value="Pickrand.db"/>
<meta-data android:name="AA_DB_VERSION" android:value="1"/>
- 自定义Application类,继承Application,在onCreate方法中对ActiveAndroid初始化。MyApplication.java代码如下:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ActiveAndroid.initialize(this);
}
}
- 在AndroidManifest.xml的application节点下添加属性android:name=”com.example.activeandroid.MyApplication”,完成使用自定义的Application。
- 定义实体类Student.java
@Table(name = "Student")
public class Student extends Model {
@Column(name = "Name")
public String name;
@Column(name = "Age")
public Integer age;
public Student(){
super();
}
public Student(String name, Integer age){
this.name = name;
this.age = age;
}
}
- MainActivity.java代码如下,一个按钮和一个ListView。实现了添加,查询,修改和删除功能,修改和添加都是调用save()方法。
public class MainActivity extends AppCompatActivity {
private Button btn_add;
private ListView lv;
private StuAdapter adapter;
private ArrayList<Student> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_add = (Button)findViewById(R.id.btn_add);
btn_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//保存数据
Student stu = new Student();
stu.name = "Lucky";
stu.age = 12;
stu.save();
list.add(stu);
adapter.notifyDataSetChanged();
}
});
lv = (ListView)findViewById(R.id.lv);
//查询数据
ArrayList<Student> students = new Select().from(Student.class).execute();
list.addAll(students);
adapter = new StuAdapter(this, list);
lv.setAdapter(adapter);
for(int i = 0; i < 10; i++){
Student stu = new Student();
stu.name = "LiLei" + i;
stu.age = 10 + i;
stu.save();
list.add(stu);
}
adapter.notifyDataSetChanged();
}
}
- activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.com.activeandroid.MainActivity">
<Button
android:id="@+id/btn_add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@android:color/transparent"
android:text="增加"/>
<ListView
android:id="@+id/lv"
android:layout_below="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
- StuAdapter .java代码如下:
public class StuAdapter extends BaseAdapter {
private Context context;
private List<Student> list;
public StuAdapter(Context context, List<Student> list){
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if(convertView == null){
viewHolder = new ViewHolder();
convertView = View.inflate(context, R.layout.item_stu, null);
viewHolder.btn_del = (Button)convertView.findViewById(R.id.btn_del);
viewHolder.tv = (TextView)convertView.findViewById(R.id.tv);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
final Student stu = list.get(position);
viewHolder.tv.setText(stu.name +"/n"+stu.age);
viewHolder.btn_del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//删除
stu.delete();
list.remove(position);
notifyDataSetChanged();
}
});
return convertView;
}
class ViewHolder{
TextView tv;
Button btn_del;
}
}
数据库升级
- 在AndroidManifest.xml中修改数据库版本号AA_DB_VERSION对应的值。
- 在assets目录下新建migrations文件夹,在migrations文件夹新建升级的数据库版本文件,比如要升级到版本2,新建2.sql。2.sql中填写升级语句:ALTER TABLE Student ADD COLUMN StuId INTEGER;
- 修改实体类增加字段StuId。