大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app;本篇博客将详细介绍ORMLite的简易用法。

下面开始介绍ORMLite的入门用法~

1、下载 ORMLite Jar

首先去ORMLite官网下载jar包,对于Android为:ormlite-android-4.48.jar 和 ormlite-core-4.48.jar ;

ps:访问不了的朋友,文章末尾会把jar、源码、doc与本篇博客例子一起打包提供给大家下载。

2、配置Bean类

有了jar,我们直接新建一个项目为:zhy_ormlite,然后把jar拷贝到libs下。

然后新建一个包:com.zhy.zhy_ormlite.bean专门用于存放项目中的Bean,首先新建一个User.Java

  1. package com.zhy.zhy_ormlite.bean;
  2. import com.j256.ormlite.field.DatabaseField;
  3. import com.j256.ormlite.table.DatabaseTable;
  4. @DatabaseTable(tableName = "tb_user")
  5. public class User
  6. {
  7. @DatabaseField(generatedId = true)
  8. private int id;
  9. @DatabaseField(columnName = "name")
  10. private String name;
  11. @DatabaseField(columnName = "desc")
  12. private String desc;
  13. public User()
  14. {
  15. }
  16. public User(String name, String desc)
  17. {
  18. this.name = name;
  19. this.desc = desc;
  20. }
  21. public int getId()
  22. {
  23. return id;
  24. }
  25. public void setId(int id)
  26. {
  27. this.id = id;
  28. }
  29. public String getName()
  30. {
  31. return name;
  32. }
  33. public void setName(String name)
  34. {
  35. this.name = name;
  36. }
  37. public String getDesc()
  38. {
  39. return desc;
  40. }
  41. public void setDesc(String desc)
  42. {
  43. this.desc = desc;
  44. }
  45. }

首先在User类上添加@DatabaseTable(tableName = "tb_user"),标明这是数据库中的一张表,标明为tb_user

然后分别在属性上添加@DatabaseField(columnName = "name") ,columnName的值为该字段在数据中的列名

@DatabaseField(generatedId = true) ,generatedId 表示id为主键且自动生成

3、编写DAO类

原生的数据库操作,需要继承SQLiteOpenHelper,这里我们需要继承OrmLiteSqliteOpenHelper,看代码:

  1. package com.zhy.zhy_ormlite.db;
  2. import java.sql.SQLException;
  3. import android.content.Context;
  4. import android.database.sqlite.SQLiteDatabase;
  5. import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
  6. import com.j256.ormlite.dao.Dao;
  7. import com.j256.ormlite.support.ConnectionSource;
  8. import com.j256.ormlite.table.TableUtils;
  9. import com.zhy.zhy_ormlite.bean.User;
  10. public class DatabaseHelper extends OrmLiteSqliteOpenHelper
  11. {
  12. private static final String TABLE_NAME = "sqlite-test.db";
  13. /**
  14. * userDao ,每张表对于一个
  15. */
  16. private Dao<User, Integer> userDao;
  17. private DatabaseHelper(Context context)
  18. {
  19. super(context, TABLE_NAME, null, 2);
  20. }
  21. @Override
  22. public void onCreate(SQLiteDatabase database,
  23. ConnectionSource connectionSource)
  24. {
  25. try
  26. {
  27. TableUtils.createTable(connectionSource, User.class);
  28. } catch (SQLException e)
  29. {
  30. e.printStackTrace();
  31. }
  32. }
  33. @Override
  34. public void onUpgrade(SQLiteDatabase database,
  35. ConnectionSource connectionSource, int oldVersion, int newVersion)
  36. {
  37. try
  38. {
  39. TableUtils.dropTable(connectionSource, User.class, true);
  40. onCreate(database, connectionSource);
  41. } catch (SQLException e)
  42. {
  43. e.printStackTrace();
  44. }
  45. }
  46. private static DatabaseHelper instance;
  47. /**
  48. * 单例获取该Helper
  49. *
  50. * @param context
  51. * @return
  52. */
  53. public static synchronized DatabaseHelper getHelper(Context context)
  54. {
  55. if (instance == null)
  56. {
  57. synchronized (DatabaseHelper.class)
  58. {
  59. if (instance == null)
  60. instance = new DatabaseHelper(context);
  61. }
  62. }
  63. return instance;
  64. }
  65. /**
  66. * 获得userDao
  67. *
  68. * @return
  69. * @throws SQLException
  70. */
  71. public Dao<User, Integer> getUserDao() throws SQLException
  72. {
  73. if (userDao == null)
  74. {
  75. userDao = getDao(User.class);
  76. }
  77. return userDao;
  78. }
  79. /**
  80. * 释放资源
  81. */
  82. @Override
  83. public void close()
  84. {
  85. super.close();
  86. userDao = null;
  87. }
  88. }

这里我们需要继承OrmLiteSqliteOpenHelper,其实就是间接继承了SQLiteOpenHelper

然后需要实现两个方法:

1、onCreate(SQLiteDatabase database,ConnectionSource connectionSource)

创建表,我们直接使用ormlite提供的TableUtils.createTable(connectionSource, User.class);进行创建~

2、onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion)

更新表,使用ormlite提供的TableUtils.dropTable(connectionSource, User.class, true);进行删除操作~

删除完成后,别忘了,创建操作:onCreate(database, connectionSource);

然后使用单例公布出一个创建实例的方法,getHelper用于获取我们的help实例;

最后我们可能会有很多表嘛,每个表一般我们都会单独写个Dao用于操作,这里为了简单我并没有抽取出来,直接写在helper中:

比如UserDao的获取:

  1. /**
  2. * 获得userDao
  3. *
  4. * @return
  5. * @throws SQLException
  6. */
  7. public Dao<User, Integer> getUserDao() throws SQLException
  8. {
  9. if (userDao == null)
  10. {
  11. userDao = getDao(User.class);
  12. }
  13. return userDao;
  14. }

然后通过获取到的Dao就可以进行User的一些常用的操作了。

4、测试

最后是测试,我们直接创建了一个测试类进行测试~~~

  1. package com.zhy.zhy_ormlite.test;
  2. import java.sql.SQLException;
  3. import java.util.List;
  4. import com.zhy.zhy_ormlite.bean.User;
  5. import com.zhy.zhy_ormlite.db.DatabaseHelper;
  6. import android.test.AndroidTestCase;
  7. import android.util.Log;
  8. public class OrmLiteDbTest extends AndroidTestCase
  9. {
  10. public void testAddUser()
  11. {
  12. User u1 = new User("zhy", "2B青年");
  13. DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
  14. try
  15. {
  16. helper.getUserDao().create(u1);
  17. u1 = new User("zhy2", "2B青年");
  18. helper.getUserDao().create(u1);
  19. u1 = new User("zhy3", "2B青年");
  20. helper.getUserDao().create(u1);
  21. u1 = new User("zhy4", "2B青年");
  22. helper.getUserDao().create(u1);
  23. u1 = new User("zhy5", "2B青年");
  24. helper.getUserDao().create(u1);
  25. u1 = new User("zhy6", "2B青年");
  26. helper.getUserDao().create(u1);
  27. testList();
  28. } catch (SQLException e)
  29. {
  30. e.printStackTrace();
  31. }
  32. }
  33. public void testDeleteUser()
  34. {
  35. DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
  36. try
  37. {
  38. helper.getUserDao().deleteById(2);
  39. } catch (SQLException e)
  40. {
  41. e.printStackTrace();
  42. }
  43. }
  44. public void testUpdateUser()
  45. {
  46. DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
  47. try
  48. {
  49. User u1 = new User("zhy-android", "2B青年");
  50. u1.setId(3);
  51. helper.getUserDao().update(u1);
  52. } catch (SQLException e)
  53. {
  54. e.printStackTrace();
  55. }
  56. }
  57. public void testList()
  58. {
  59. DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
  60. try
  61. {
  62. User u1 = new User("zhy-android", "2B青年");
  63. u1.setId(2);
  64. List<User> users = helper.getUserDao().queryForAll();
  65. Log.e("TAG", users.toString());
  66. } catch (SQLException e)
  67. {
  68. e.printStackTrace();
  69. }
  70. }
  71. }

简单测试了下CURD,使用AndroidTestCase记得配置下环境~~~

用起来是不是还是非常方便的,不过还是建议大家例如User的数据库操作,单独抽取出来为UserDao,如下:

  1. package com.zhy.zhy_ormlite.db;
  2. import java.sql.SQLException;
  3. import android.content.Context;
  4. import com.zhy.zhy_ormlite.bean.User;
  5. public class UserDao
  6. {
  7. private Context context;
  8. public UserDao(Context context)
  9. {
  10. this.context = context;
  11. }
  12. public void add(User user)
  13. {
  14. try
  15. {
  16. DatabaseHelper.getHelper(context).getUserDao().create(user);
  17. } catch (SQLException e)
  18. {
  19. }
  20. }//......
  21. }

注:ORMLite还提供了一些基类ORMLiteBaseActivity,ORMLiteBaseService之类的,便于数据库操作的,这里不做考虑,毕竟项目中很大可能自己也需要继承自己的BaseActvity之类的。

上面简单介绍了如何使用ORMLite框架,Android 快速开发系列 ORMLite 框架的使用 将对其用法进行深入的介绍。

源码点击下载

Android ORMLite 框架的入门用法的更多相关文章

  1. Android—Ormlite框架简单的操作数据库

    大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...

  2. Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包

    Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...

  3. Android数据库框架-ORMLite

    参考资料 Android ORMLite 框架的入门用法 Android 快速开发系列 ORMLite 框架最佳实践 添加依赖 compile 'com.j256.ormlite:ormlite-an ...

  4. Android数据库框架-----ORMLite 的基本用法

    ORMLite 是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁: 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面. 缺点:1.基于反射,效率较低(本 ...

  5. Android 数据库框架OrmLite的使用(一)

    在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...

  6. Android数据库框架-----ORMLite关联表的使用

    上一篇已经对ORMLite框架做了简单的介绍:Android数据库框架-----ORMLite 的基本用法~~本篇将介绍项目可能会使用到的一些用法,也为我们的使用ORMLite框架总结出一个较合理的用 ...

  7. android ORM框架ORMLite封装

    源码:http://download.csdn.net/detail/a924571572/9415506 一.框架效率对比 由于目前公司里面android端数据的数据量基本在千条以内,所以选择了更为 ...

  8. android数据库持久化框架, ormlite框架,

    前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...

  9. Android 数据库框架ormlite

    Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机 ...

随机推荐

  1. .net core中加载lua脚本的类库: MoonSharp

    前言 MoonSharp是一个支持C#调用lua脚本的类库,支持.net, .net core, mono, unity,因此在.net core中也能够使用,而且加载和调用lua也很方便简单: 官网 ...

  2. 编写JQuery插件-4

    封装对象方法的插件 jQuery.fn.extend() 的两种写法 以添加一个点击按钮为例: 方法一: (function ($) { $.fn.mask = function(options){ ...

  3. C# Webform中读取Windows AD/LDAP域用户清单

    直接上干货,核心代码如下,读取出来相应的用户清单到DataTable中.需要其它字段可以自己增加,别忘了引用using System.DirectoryServices. #region privat ...

  4. C# Web.config 配置handlers 和 httpHandlers

    <system.web> <httpHandlers> <add verb="*" path="*.js.axd" type=&q ...

  5. Android jni 编程4(对基本类型二维整型数组的操作)

    Android jni 编程 对于整型二维数组操作: 类型一:传入二维整型数组,返回一个整型值 类型二:传入二维整型数组,返回一个二维整型数组 声明方法: private native int Sum ...

  6. AspNet Identity 和 Owin 谁是谁

    英文原文:http://tech.trailmax.info/2014/08/aspnet-identity-and-owin-who-is-who/ 最近我发现Stackoverflow上有一个非常 ...

  7. Java面向对象知识点

    对象:一切客观存在的事物都是对象 语法部分: 类的概念:1.类是对象的抽象 2.类是客观事物在人脑中的主观反应 3.类是对象的模板 类的设计: 属性:定义位置:类以内,方法以外 实例变量:1 有默认值 ...

  8. JAVA中的数据结构 - 真正的去理解红黑树

    一, 红黑树所处数据结构的位置: 在JDK源码中, 有treeMap和JDK8的HashMap都用到了红黑树去存储 红黑树可以看成B树的一种: 从二叉树看,红黑树是一颗相对平衡的二叉树 二叉树--&g ...

  9. linux下安装Mysql 以及导入数据库

    1.下载mysql的rpm包,创建一个文件夹例如software来放置下面文件 可以通过wget下载具体的地址 (1)MySQL-server-5.6.10-1.rhel5.x86_64.rpm:My ...

  10. Xcode插件包Alcatraz

    安装命令  curl -fsSL https://raw.github.com/alcatraz/Alcatraz/master/Scripts/install.sh | sh 终于可以了  这个其实 ...