首先要引入的包androrm.jar
我的目录结构
MainActivity.java
package tong.android.test; import java.util.ArrayList; import java.util.List; import tong.android.model.Author; import tong.android.model.Book; import com.orm.androrm.DatabaseAdapter; import com.orm.androrm.Model; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; /** * 本程序为了测试androrm数据库持久层框架,最后使用结论是,支持外键,支持多表查询,但是这个框架的模型建的不是很合习惯 * @author TongShuai * */ public class MainActivity extends Activity implements OnClickListener{ private EditText mBookName; private EditText mAuthorName; private Button mSubmit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViews(); addListeners(); initDB(); } /** * 建立数据库 初始化 数据库 与 模型之间的映射关系 */ private void initDB() { List<Class<? extends Model>> models = new ArrayList<Class<? extends Model>>(); models.add(Author.class); models.add(Book.class); DatabaseAdapter.setDatabaseName("a_database_name"); DatabaseAdapter adapter = new DatabaseAdapter(getApplicationContext()); adapter.setModels(models); } private void addListeners() { mSubmit.setOnClickListener(this); } private void findViews() { mBookName = (EditText) findViewById(R.id.editText1); mAuthorName = (EditText) findViewById(R.id.editText2); mSubmit = (Button) findViewById(R.id.button1); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } /* * 这个方法用来执行保存 */ @Override public void onClick(View v) { Author author = new Author(); author.setName(mAuthorName.getText().toString()); author.save(this); Book book = new Book(); book.setTitle(mBookName.getText().toString()); book.setAuthor(author); book.save(this); Toast.makeText(this, "save", 5000).show(); } }
模型类:Book.java
package tong.android.model; import com.orm.androrm.Model; import com.orm.androrm.field.CharField; import com.orm.androrm.field.ForeignKeyField; public class Book extends Model { //字符串型智能用这种方式保存 protected CharField mTitle; //外键关联 protected ForeignKeyField<Author> mAuthor; public Book() { mTitle = new CharField(80); mAuthor = new ForeignKeyField<Author>(Author.class); } public void setAuthor(Author author){ mAuthor.set(author); } public String getTitle(){ return mTitle.get(); } public void setTitle(String title){ mTitle.set(title); } public Author getAuthor(){ return mAuthor.get(); } }
模型类:Author.java
package tong.android.model; import android.content.Context; import com.orm.androrm.Model; import com.orm.androrm.QuerySet; import com.orm.androrm.field.CharField; public class Author extends Model { protected CharField mName; public static final QuerySet<Author> objects(Context context) { return objects(context, Author.class); } public Author() { super(); this.mName = new CharField(80); } public void setName(String name ){ mName.set(name); } public String getName(){ return mName.get(); } }
布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="书名:" /> <EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="作者:" /> <EditText android:id="@+id/editText2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ems="10" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提交" /> </LinearLayout>