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操作数据库要短平快的多。

 
时间: 2024-10-23 22:49:48

ORMLite的使用的相关文章

ServiceStack.OrmLite简单扩展

ServiceStack.OrmLite框架将所有的方法都扩展到了一个IDbConnection对象上,使用起来不是 很方便,在此对该框架做一个简单的封装. OrmLiteExecFilterExt类 using System; using System.Collections.Generic; using System.Data; using System.Text; using System.Threading.Tasks; namespace ServiceStack.OrmLite.Ex

[翻译] ORMLite document -- How to Use Part (二)

前言 此文档翻译于第一次学习 ORMLite 框架,如果发现当中有什么不对的地方,请指正.若翻译与原文档出现任何的不相符,请以原文档为准.原则上建议学习原英文文档. ---------------------------------------------------------------------------------------------- 二.如何使用 2.7 表的创建 ORMLite 提供了一些工具类为您存储在数据库中的类创建 table 和 schema. 2.7.1 Tabl

谈谈我的入门级实体框架Loogn.OrmLite

每次看到有新的ORM的时候,我总会留意一下,因为自己也写过一个这样的框架,人总是有比较之心的.我可能会down下来跑一跑,也可能不会这么做,这个取决于跑起来的难易程度.我是很懒的,有XML配置或其他稍微不直观的设置的,我总是懒得看.每当笔者谈论自己的ORM的时候,总会拿EF和Dapper说事儿,EF算官方的吧,Dapper则以效率著称.但是我很奇怪为什么ServiceStack.OrmLite这么NB的一个ORM却鲜为人提.我真想为它说一句话:.net的ORM框架中有一个非常优秀的成员叫Serv

安卓数据库ORMLite框架总结

/*---------------------------------------- *-描述--ORMLite框架使用总结. *-描述--S1.相关理论描述 * >>ORMlite通过Java注解的方式来建立起与数据库的映射关系,在Android面向数据库开发中,是一个比较 * 流行的开源框架,方便操作而且功能强大 * >>ORMLite的优缺点 * 优点:轻量级.使用简单.封装完善.文档全面 * 缺点:基于反射,效率较低,缺少中文翻译文档 * >> *-描述--S2

[翻译] ORMLite document -- Getting Started

前言 此文档翻译于第一次学习 ORMLite 框架,如果发现当中有什么不对的地方,请指正.若翻译与原文档出现任何的不相符,请以原文档为准.原则上建议学习原英文文档. ---------------------------------------------------------------------------------------------- 一.入门 1.1 下载 ORMLite Jar 为了开始使用 ORMLite,您需要下载的 jar 文件.ORMLite 发布包是一个默认库,不

【光速使用开源框架系列】数据库框架OrmLite

[关于本系列] 最近看了不少开源框架,网上的资料也非常多,但是我认为了解一个框架最好的方法就是实际使用.本系列博文就是带领大家快速的上手一些常用的开源框架,体会到其作用. 由于作者水平有限,本系列只会描述如何快速的使用框架的基本功能,更多的详细设置大家可以在这些项目的页面上找到. [介绍]: ORMLite是一款辅助开发数据库的框架,可以通过给实体配置标注来快速建立数据表,也可以通过其提供的DAO类中的方法来快速对数据库进行操作,如增删改查等. [项目页面]: http://ormlite.co

ServiceStack.OrmLite中的一些&quot;陷阱&quot;(1)

使用过ServiceStack.Ormlite的人都应该知道,其作为一个轻量级的ORM,使用的便捷度非常高,用起来就一个字:爽!而支撑其便捷度的,是库内大量地使用了扩展方法及静态变量. 首先先从源头入手分析(以下以Sqlite为例): OrmLiteConfig.DialectProvider = SqliteOrmLiteDialectProvider.Instance; using (IDbConnection db = "~/db.sqlite".MapAbsolutePath(

ServiceStack.OrmLite中的一些&quot;陷阱&quot;(2)

注:此系列不是说ServiceStack.OrmLite的多个陷阱,这仅仅个人认为是某一个陷阱(毕竟我踩坑了)而引发的思考. 前文说到了项目需要使用两种不同的数据库语言,虽说前文问题已基本解决了,但是我发现OrmLite在设计上有需要改进的地方.正如前面提到的OrmLite为了开发的便捷性,ORM所需要生成SQL语句DialectProvider设置为静态属性(尽管使用了线程安全),但是这样的话DialectProvider便与线程上下文产生耦合. 而一个更优的方法,则是使用代理.第一次对代理产

ServiceStack.OrmLite中的一些&quot;陷阱&quot;(3)

前文说到如果使用多数据库(不同SQL方言)时要如何开发?其实前文(第二篇)也有“透露”到.就是直接使用库提供的OrmLiteConnection 及OrmLiteConnectionFactory(IDbConnectionFactory) .我们先来看下代理类是怎么实现的: public class OrmLiteConnection : IDbConnection, IHasDbConnection, IHasDbTransaction { public readonly OrmLiteCo