ORM框架

什么是ORM框架   ORMobject Relational Mapping)框架采用元数据

来描述与关系映射细节,把对象持久化到数据库中。就是利用java的反射机制把对象和数据库记录映射关联起来。

特点和优势:

基于ORM关系操作数据库

配置方便

几乎不需要编写任何SQL语句就能够保存和检索SQLite数据库记录

每个操作都封装为一个类,如save()delete()

对象形式数据存取。

 


首先配置文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jike.activeandroiddemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:name="com.jike.activeandroiddemo.MyApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
              //数据库的名称
            android:name="AA_DB_NAME"
            android:value="Stu.db" />
        <meta-data
             //数据库版本号
            android:name="AA_DB_VERSION"
            android:value="1" />

        <activity
            android:name="com.jike.activeandroiddemo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
 
public class MyApplication extends Application {

	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		ActiveAndroid.initialize(this);
	}

}

/**
 * 增删改查学生基本信息
 * 
 * @author Administrator
 * 
 */
public class MainActivity extends Activity {

	private Button btn_add;
	private ListView lv;
	private StuAdapter adapter;
	private ArrayList<Student> list = new ArrayList<Student>();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}

	private void initView() {
		btn_add = (Button) this.findViewById(R.id.btn_add);
		lv = (ListView) this.findViewById(R.id.lv);
		adapter = new StuAdapter(this, list);
		lv.setAdapter(adapter);
		List<Student> stus = new Select().from(Student.class).execute();
		for (int i = 0; i < stus.size(); i++) {
			Student student = stus.get(i);
			student.name = "HanMeiMei";
			student.save();
		}
		list.addAll(stus);
		for (int i = 0; i < 8; i++) {
			Student stu = new Student();
			stu.name = "Lilei" + i;
			stu.age = 10 + i;
			stu.save();
			list.add(stu);
		}
		adapter.notifyDataSetChanged();
		btn_add.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				Student stu = new Student();
				stu.name = "Lucy";
				stu.age = 12;
				stu.save();
				list.add(stu);
				adapter.notifyDataSetChanged();
			}
		});
	}
}

@Table(name = "Students")
public class Student extends Model {
	@Column(name = "Name")
	public String name;
	@Column(name = "Age")
	public Integer age;
}

最后是适配器:

public class StuAdapter extends BaseAdapter {
	private Context context;
	private ArrayList<Student> list;

	public StuAdapter(Context c, ArrayList<Student> lists) {
		this.context = c;
		this.list = lists;
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return list.size();
	}

	@Override
	public Object getItem(int arg0) {
		// TODO Auto-generated method stub
		return list.get(arg0);
	}

	@Override
	public long getItemId(int arg0) {
		// TODO Auto-generated method stub
		return arg0;
	}

	@Override
	public View getView(final int position, View convertView, ViewGroup parent) {
		ViewHolder holder = null;
		if (convertView == null) {
			holder = new ViewHolder();
			convertView = View.inflate(context, R.layout.item_stu, null);
			holder.btn_del = (Button) convertView.findViewById(R.id.btn_del);
			holder.tv = (TextView) convertView.findViewById(R.id.tv);
			convertView.setTag(holder);
		} else {
			holder = (ViewHolder) convertView.getTag();
		}
		final Student stu = list.get(position);
		holder.tv.setText(stu.name + "\n" + stu.age);
		holder.btn_del.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				stu.delete();
				list.remove(position);
				notifyDataSetChanged();
			}
		});
		return convertView;
	}

	class ViewHolder {
		TextView tv;
		Button btn_del;
	}

}
这个属性加上去 不会每次启动activity都去扫一遍
 <meta-data
            android:name="AA_MODELL"
            android:value="com.jike.activeandroid.Item,com.jike.activeandroid.Category" />
升级版本的话 在assets目录下 新建migrations名字文件 如1.sql1.
1sql里写上:
ALTER TABLE Categoryes ADD COLUMN StuId INTEGER;


/**
* /migrations/升级后的版本号.sql
*
* ALTER TABLE Category ADD COLUMN Count INTEGER;
*
* @author Administrator
*
*/






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值