ORM框架

来源:互联网 发布:python 2.6 2.7 区别 编辑:程序博客网 时间:2024/04/30 00:13

什么是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 {@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.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>();@Overrideprotected 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() {@Overridepublic 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;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn list.get(arg0);}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic 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() {@Overridepublic 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
*
*/






0 0
原创粉丝点击