ORMLite的使用

首先需要下载core和android两个jar

http://ormlite.com/releases/

然后拷贝到libs文件夹下并且添加为库

具体的使用看标程:

School.java

 1 package com.turtle920.ormlitedemo;
 2 
 3 import com.j256.ormlite.field.DatabaseField;
 4 import com.j256.ormlite.table.DatabaseTable;
 5 
 6 @DatabaseTable(tableName = "school")
 7 public class School {
 8 
 9     @DatabaseField(generatedId=true)
10     private int id;
11 
12     @DatabaseField(columnName = "name")
13     private String name;
14 
15     @DatabaseField
16     private String location;
17 
18     public int getId() {
19         return id;
20     }
21 
22     public void setId(int id) {
23         this.id = id;
24     }
25 
26     public String getName() {
27         return name;
28     }
29 
30     public void setName(String name) {
31         this.name = name;
32     }
33 
34     public String getLocation() {
35         return location;
36     }
37 
38     public void setLocation(String location) {
39         this.location = location;
40     }
41 }

以上通过注释符来用框架反射table和field,(generatedId=true)表示自增长

DBHelper.java

 1 package com.turtle920.ormlitedemo;
 2 
 3 import android.content.Context;
 4 import android.database.sqlite.SQLiteDatabase;
 5 
 6 import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
 7 import com.j256.ormlite.dao.Dao;
 8 import com.j256.ormlite.support.ConnectionSource;
 9 import com.j256.ormlite.table.TableUtils;
10 
11 import java.sql.SQLException;
12 
13 public class DBHelper extends OrmLiteSqliteOpenHelper {
14 
15 
16     private final static int DATABASE_VERSION = 1;
17     Dao<School, Integer> mSchoolDao;
18     private static final String DB_NAME = "orm";
19     private static DBHelper mDbHelper;
20 
21     private DBHelper(Context context) {
22         super(context, DB_NAME, null, DATABASE_VERSION);
23     }
24 
25 
26     public static DBHelper getInstance(Context context) {
27         if (mDbHelper == null) {
28             mDbHelper = new DBHelper(context);
29         }
30         return mDbHelper;
31     }
32 
33     @Override
34     public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
35         try {
36             TableUtils.createTableIfNotExists(connectionSource, School.class);
37         } catch (SQLException e) {
38             e.printStackTrace();
39         }
40     }
41 
42 
43     @Override
44     public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
45                           int arg3) {
46     }
47 
48     public Dao<School, Integer> getSchoolDao() throws SQLException {
49         if (mSchoolDao == null) {
50             mSchoolDao = getDao(School.class);
51         }
52         return mSchoolDao;
53     }
54 
55 
56 }

这个类继承自OrmLiteSqliteOpenHelper.class继承自SqliteOpenHelper.class,相当于是增强版的

MainActivity.java

 1 package com.turtle920.ormlitedemo;
 2 
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.util.Log;
 6 
 7 import com.j256.ormlite.dao.Dao;
 8 
 9 import java.sql.SQLException;
10 import java.util.List;
11 
12 public class MainActivity extends AppCompatActivity {
13 
14     private static final String TAG = "DaoDaoDao";
15     DBHelper mDbHelper;
16     Dao<School, Integer> mSchoolDao;
17 
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22         mDbHelper = DBHelper.getInstance(this);
23         try {
24             mSchoolDao = mDbHelper.getSchoolDao();
25         } catch (SQLException e) {
26             Log.e(TAG, "constructor exception", e);
27         }
28         testDao();
29     }
30 
31     private void testDao() {
32 
33         School school1 = new School();
34         school1.setName("university");
35         school1.setLocation("shanghai");
36 
37         School school2 = new School();
38         school2.setName("middle school");
39         school2.setLocation("hubei");
40 
41         School school3 = new School();
42         school3.setName("CDQZ");
43         school3.setLocation("CHENGDU");
44 
45         try {
46             mSchoolDao.create(school1);
47             mSchoolDao.create(school2);
48             mSchoolDao.create(school3);
49             //获取表中所有的student。
50             Log.e(TAG,"************BEGIN*************");
51             List<School> schools=mSchoolDao.queryForAll();
52             Log.e(TAG, "before delete school1 size is:" + schools.size());
53             for (int i = 0; i < schools.size(); i++) {
54                 Log.e(TAG, schools.get(i).getId()+" "+schools.get(i).getName()+" "+schools.get(i).getLocation());
55             }
56             mSchoolDao.delete(school1);
57 
58             //schools=mSchoolDao.queryForAll();
59             schools=mSchoolDao.queryForEq("id","3");
60             Log.e(TAG, "after delete school1 list size is:"+schools.size());
61             for (int i = 0; i < schools.size(); i++) {
62                 Log.e(TAG, schools.get(i).getId()+" "+schools.get(i).getName()+" "+schools.get(i).getLocation());
63             }
64 
65         } catch (SQLException e) {
66             e.printStackTrace();
67         }
68     }
69 
70 }

其中一些操作:

1 .queryForEq("id","3");//查询“id”=“3”的
2 .queryForAll();//所有
3 .delete(school1);//删除
4 .deleteById(int id);//按id删
5 .update(school);//更新    
6 .create(school);//插入

可以看到对数据库的访问被投影成了对对象的操作,相比直接用android给的api操作数据库要短平快的多。

 
posted @ 2015-10-11 21:49  龟窝  阅读(286)  评论(0编辑  收藏  举报