论坛首页 移动开发技术论坛

分享自用Android ORM工具类。

浏览 7442 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-05-07   最后修改:2012-05-07

添加

查询



Step 1:创建实体对象
@Table(name = "book")
public class Book {
    @Id
    private Long id;

    @Column(name = "book_name")
    private String bookName;

    public Book() {

    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

}


Step 2:创建 DatabaseHelper
public class DatabaseHelper extends SQLiteOpenHelper {
    public static final String BOOK_TABLE_NAME = "orm_book";

    public static final String DATABASE_NAME = "OrmDemo.db";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        TableUtils.createTable(db, true, Book.class);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        TableUtils.dropTable(db, Book.class);
        onCreate(db);
    }

}

Step 3:创建 DatabaseService
public class DatabaseService {
    private Context mContext;

    private DatabaseHelper mDatabaseHelper;

    private SQLiteDatabase mSQLiteDatabase;

    private AhibernateDao<Book> mBookDao;

    public DatabaseService(Context context) {
        this.mContext = context;
        this.mDatabaseHelper = new DatabaseHelper(mContext);
        this.mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();

        this.mBookDao = new AhibernateDao<Book>(this.mSQLiteDatabase);
    }

    // ===================book begin===========================
    public List<Book> getBooksByWhere(Map<String, String> where) {
        List<Book> bookList = mBookDao.queryList(Book.class, where);
        return bookList;
    }

    public List<Book> getBooks(Book book) {
        List<Book> bookList = mBookDao.queryList(book);
        return bookList;
    }

    public int addBook(Book book) {
        return mBookDao.insert(book);
    }

    public void updateBook(Book book, Map<String, String> where) {
        mBookDao.update(book, where);
    }

    public void deleteBook(Map<String, String> where) {
        mBookDao.delete(Book.class, where);
    }
    // ===================book end===============================

Step 4:创建Activity
public class OrmDemoActivity extends Activity {
    /** Called when the activity is first created. */
    DatabaseService mDatabaseService;

    Button mAddButton;

    Button mQueryButton;

    TextView mTextView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mAddButton = (Button) findViewById(R.id.add);
        mQueryButton = (Button) findViewById(R.id.query);
        mTextView = (TextView) findViewById(R.id.count);
        mDatabaseService = new DatabaseService(this);
        mAddButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Book book = new Book();
                Random ra = new Random();
                book.setId(ra.nextLong());
                book.setBookName("demo");
                mDatabaseService.addBook(book);
                Toast.makeText(OrmDemoActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
            }
        });

        mQueryButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                mTextView.setText("总共有" + mDatabaseService.getBooksByWhere(null).size() + "本书");
            }
        });
    }


工具类源码地址:http://ahibernate.googlecode.com/svn/trunk/
  • 大小: 20.7 KB
  • 大小: 24.6 KB
  • 大小: 19.8 KB
   发表时间:2012-05-07  
private AhibernateDao<Book> mBookDao; 
这个类在那?
0 请登录后投票
   发表时间:2012-05-07  
额。。看见了,各种反射啊?这东西用起来不慢啊?
0 请登录后投票
   发表时间:2012-05-07  
lc32781971 写道
private AhibernateDao<Book> mBookDao; 
这个类在那?

在lib文件夹下的jar包里
0 请登录后投票
   发表时间:2012-05-07  
lc32781971 写道
额。。看见了,各种反射啊?这东西用起来不慢啊?

速度还行。CPU 1GHZ。。。
0 请登录后投票
   发表时间:2012-05-07  
查询db要用thread,哥
0 请登录后投票
   发表时间:2012-05-07  
nathan.wu 写道
查询db要用thread,哥

这个可以根据项目的实际情况来。只要不影响到UI线程,一般是没有问题的
0 请登录后投票
   发表时间:2012-05-08  
slam33661490 写道
lc32781971 写道
额。。看见了,各种反射啊?这东西用起来不慢啊?

速度还行。CPU 1GHZ。。。

不是每个人的手机 都是1Ghz的。
0 请登录后投票
   发表时间:2012-05-08  
看起来还不错~之前看到国外的ormlite,jar包似乎有300KB太大了。
反射引起的性能我觉得不是很要紧
不过楼主给的地址似乎上不去啊?
0 请登录后投票
   发表时间:2012-05-08  
sd6733531 写道
看起来还不错~之前看到国外的ormlite,jar包似乎有300KB太大了。
反射引起的性能我觉得不是很要紧
不过楼主给的地址似乎上不去啊?

那个地址可以用SVN直接check out下来。

http://ahibernate.googlecode.com
这个是主页地址
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics