android ORM之一ActiveAndroid

最好的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对应于数据库版本。
"AA_DB_NAME" android:value="Pickrand.db"/>
"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 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 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

<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 list;

    public StuAdapter(Context context, List 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;
    }
}

数据库升级

  1. 在AndroidManifest.xml中修改数据库版本号AA_DB_VERSION对应的值。
  2. 在assets目录下新建migrations文件夹,在migrations文件夹新建升级的数据库版本文件,比如要升级到版本2,新建2.sql。2.sql中填写升级语句:ALTER TABLE Student ADD COLUMN StuId INTEGER;
  3. 修改实体类增加字段StuId。

你可能感兴趣的:(android基础)