`

android Sqlite数据库对象模型ORMLite框架学习

 
阅读更多
在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app。
下面开始介绍ORMLite的入门用法~

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

2、配置Bean类
有了jar,我们直接新建一个项目为:zhy_ormlite,然后把jar拷贝到libs下。
然后新建一个包:com.zhy.zhy_ormlite.bean专门用于存放项目中的Bean,首先新建一个User.java

package com.zhy.zhy_ormlite.bean;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

@DatabaseTable(tableName = "tb_user")
public class User
{
	@DatabaseField(generatedId = true)
	private int id;
	@DatabaseField(columnName = "name")
	private String name;
	@DatabaseField(columnName = "desc")
	private String desc;

	public User()
	{
	}

	public User(String name, String desc)
	{
		this.name = name;
		this.desc = desc;
	}

	public int getId()
	{
		return id;
	}

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

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public String getDesc()
	{
		return desc;
	}

	public void setDesc(String desc)
	{
		this.desc = desc;
	}

}



首先在User类上添加@DatabaseTable(tableName = "tb_user"),标明这是数据库中的一张表,标明为tb_user
然后分别在属性上添加@DatabaseField(columnName = "name") ,columnName的值为该字段在数据中的列名
@DatabaseField(generatedId = true) ,generatedId 表示id为主键且自动生成

3、编写DAO类

原生的数据库操作,需要继承SQLiteOpenHelper,这里我们需要继承OrmLiteSqliteOpenHelper,看代码:
package com.zhy.zhy_ormlite.db;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
import com.zhy.zhy_ormlite.bean.Article;
import com.zhy.zhy_ormlite.bean.Student;
import com.zhy.zhy_ormlite.bean.User;

public  class DatabaseHelper extends OrmLiteSqliteOpenHelper
{
	private static final String TABLE_NAME = "sqlite-test.db";

	private Map<String, Dao> daos = new HashMap<String, Dao>();

	private DatabaseHelper(Context context)
	{
		super(context, TABLE_NAME, null, 4);
	}

	@Override
	public void onCreate(SQLiteDatabase database,
			ConnectionSource connectionSource)
	{
		try
		{
			TableUtils.createTable(connectionSource, User.class);
			TableUtils.createTable(connectionSource, Article.class);
			TableUtils.createTable(connectionSource, Student.class);
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
	}

	@Override
	public void onUpgrade(SQLiteDatabase database,
			ConnectionSource connectionSource, int oldVersion, int newVersion)
	{
		try
		{
			TableUtils.dropTable(connectionSource, User.class, true);
			TableUtils.dropTable(connectionSource, Article.class, true);
			TableUtils.dropTable(connectionSource, Student.class, true);
			onCreate(database, connectionSource);
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
	}

	private static DatabaseHelper instance;

	/**
	 * 单例获取该Helper
	 * 
	 * @param context
	 * @return
	 */
	public static synchronized DatabaseHelper getHelper(Context context)
	{
		context = context.getApplicationContext();
		if (instance == null)
		{
			synchronized (DatabaseHelper.class)
			{
				if (instance == null)
					instance = new DatabaseHelper(context);
			}
		}

		return instance;
	}

	public synchronized Dao getDao(Class clazz) throws SQLException
	{
		Dao dao = null;
		String className = clazz.getSimpleName();

		if (daos.containsKey(className))
		{
			dao = daos.get(className);
		}
		if (dao == null)
		{
			dao = super.getDao(clazz);
			daos.put(className, dao);
		}
		return dao;
	}

	/**
	 * 释放资源
	 */
	@Override
	public void close()
	{
		super.close();

		for (String key : daos.keySet())
		{
			Dao dao = daos.get(key);
			dao = null;
		}
	}

}




1、整个DatabaseHelper使用单例只对外公布出一个对象,保证app中只存在一个SQLite Connection
2、我们对每个Bean创建一个XXXDao来处理当前Bean的数据库操作,当然真正去和数据库打交道的对象,通过上面代码中的getDao(T t)进行获取
getDao为一个泛型方法,会根据传入Class对象进行创建Dao,并且使用一个Map来保持所有的Dao对象,只有第一次调用时才会去调用底层的getDao()。

4、Bean的Dao


package com.zhy.zhy_ormlite.db;

import java.sql.SQLException;

import android.content.Context;

import com.j256.ormlite.dao.Dao;
import com.zhy.zhy_ormlite.bean.User;

public class UserDao
{
	private Context context;
	private Dao<User, Integer> userDaoOpe;
	private DatabaseHelper helper;

	public UserDao(Context context)
	{
		this.context = context;
		try
		{
			helper = DatabaseHelper.getHelper(context);
			userDaoOpe = helper.getDao(User.class);
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
	}

	/**
	 * 增加一个用户
	 * @param user
	 */
	public void add(User user)
	{
		try
		{
			userDaoOpe.create(user);
		} catch (SQLException e)
		{
			e.printStackTrace();
		}

	}//...other operations


}



5.事务操作

//事务操作
		TransactionManager.callInTransaction(helper.getConnectionSource(),
				new Callable<Void>()
				{

					@Override
					public Void call() throws Exception
					{
						return null;
					}
				});


ORMLite下载地址:http://ormlite.com/releases/


转自:http://blog.csdn.net/lmj623565791/article/details/39122981



















分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    安卓SQLite数据库相关-Android轻量级sqliteorm框架.zip

    SQLite数据库具有体积小、效率高、无需单独服务器进程等优点,非常适合移动设备上的应用。 这篇资料主要围绕的是Android中的SQLite ORM(Object-Relational Mapping)框架,这是一种将数据库操作与对象模型相结合的...

    ORMLite框架二次封装工具类

    本文将深入探讨ORMLite框架的原理、二次封装的方法以及如何利用封装后的工具类进行Sqlite数据库操作。 首先,ORMLite的核心理念是将Java对象与数据库表之间的映射关系自动化处理。通过注解,我们可以标记Java类及其...

    ormlite操作android数据库

    在标题"ormlite操作android数据库"中,主要涉及的是如何使用ORMLite框架来管理Android应用中的SQLite数据库。下面我们将详细探讨ORMLite在Android环境下的核心概念、使用步骤以及一些关键特性。 1. **核心概念** -...

    Android轻量级sqlite orm框架.rar

    - 数据库创建:SQLiteOpenHelper是Android中用于管理SQLite数据库的类,包括创建、升级和回降数据库版本。 - SQL操作:SQL语句用于创建表、插入数据、查询、更新和删除数据。 - Cursor对象:它是Android中的游标...

    Android轻量级sqlite orm框架.zip

    SQLite ORM(对象关系映射)框架则简化了Android开发者与SQLite数据库之间的交互,使得数据操作更加方便,代码更简洁。本文将深入探讨Android轻量级SQLite ORM框架,并结合提供的源码进行学习。 首先,我们需要了解...

    Android软件开发之数据库SQLite 详解源码

    通过学习并实践以上知识点,你将能够熟练地在Android应用中运用SQLite数据库,实现高效的数据存储和管理。同时,随着技术的发展,不断了解新的库和最佳实践,如使用LiveData和ViewModel配合Room进行数据绑定,可以...

    AndroidInject增加sqlite3数据库映射注解(ORM).zip

    总之,通过学习这个项目,开发者可以深入理解Android中SQLite数据库的ORM映射方式,掌握使用注解简化数据库操作的方法,提升Android应用开发的效率。这不仅可以减少代码量,还能降低维护成本,使代码更加清晰、易于...

    安卓Android源码——轻量级sqliteorm框架.zip

    在Android应用开发中,SQLite ORM(对象关系映射)框架可以帮助开发者更加便捷地管理和操作数据库,避免了直接编写SQL语句的繁琐。本文将深入探讨一个适用于Android的轻量级SQLite ORM框架。 1. **SQLite基础知识**...

    Android轻量级sqlite orm框架-IT计算机-毕业设计.zip

    这些框架将Java对象与SQLite数据库中的记录自动映射,减少了手动编写SQL语句的工作量。在这个项目中,你可能接触到一种轻量级的ORM框架,通过注解或配置文件定义数据模型和数据库之间的映射关系。 4. **数据模型...

    Android数据库框架

    Lite ORM是一款针对Android平台设计的简单易用的对象关系映射框架,它允许开发者通过简单的注解将Java对象与SQLite数据库表进行绑定,避免了编写SQL语句的繁琐工作。在"android-lite-orm-master"这个压缩包中,包含...

    android SQLite 执久化框架,类似于hibernate

    然而,直接操作SQLite数据库可能会使代码变得复杂,不易维护。因此,出现了类似Hibernate的Android SQLite持久化框架,它们旨在简化数据存取,提高开发效率。 Hibernate是Java领域的一个对象关系映射(ORM)框架,...

    Android应用源码之Android轻量级sqlite orm框架.zip

    ORMLite则是另一个流行的选择,它提供了Java到SQLite数据库的映射,支持多种数据库类型,包括SQLite。ORMLite提供了丰富的API,允许开发者进行复杂的查询和事务处理。 从压缩包中的“Android应用源码”来看,这个...

    Android快速开发--ORMLite,包含jar以及官方文档

    ORMLite(Object-Relational Mapping Lite)是一个轻量级的ORM框架,它简化了在Android平台上与SQLite数据库进行交互的工作。本资源提供了ORMLite的jar文件以及官方文档,帮助开发者快速上手并高效地使用这个库。 *...

    Android上使用ormlite 数据库持久映射

    本篇将详细讲解如何在Android上使用ORMlite进行数据库持久化映射,使得SQLite数据库的操作更加简洁高效。 ORMlite是一个轻量级的Java ORM框架,它允许开发者通过面向对象的方式来操作数据库,而无需直接编写SQL语句...

    ormlite demo 及 api

    ORMLite 是一个轻量级的对象关系映射(Object-Relational Mapping)框架,它主要用于简化在Java和Android平台上对SQLite数据库的操作。ORMLite 让开发者可以用面向对象的方式处理数据库操作,而无需直接编写SQL语句...

    ORMLite jar、文档、源码、以及博客实例

    它们扩展了核心库,添加了对Android特定特性的支持,如SQLite数据库的管理。`ormlite-android-4.48-sources.jar`同样提供了Android库的源代码。 `ormlite.pdf`是ORMLite的官方用户手册,详细介绍了如何配置和使用...

    Android高级应用源码-Android轻量级sqlite orm框架.zip

    在Android系统中,每个应用程序都有自己的SQLite数据库,可以通过`SQLiteOpenHelper`类来创建、升级和访问数据库。`SQLiteOpenHelper`的子类通常负责管理数据库的版本控制,并在需要时执行升级脚本。 接下来,ORM...

    Android高级应用源码-AndroidInject增加sqlite3数据库映射注解(ORM).rar

    1. **数据模型类**:查看用注解标记的Java类,理解它们如何映射到SQLite数据库的表和字段。 2. **数据库初始化**:了解如何在应用程序启动时创建或升级数据库,通常是在SQLiteOpenHelper的子类中完成。 3. **数据库...

    Python-关于SQLiteORM移动数据库SharedPreferences等Android持久性库的精选列表

    其次,ORM框架在Android开发中被广泛使用,它可以将Java对象与SQLite数据库中的记录对应起来,简化数据操作。例如,ActiveAndroid、ORMLite和GreenDao等都是知名的Android ORM库。这些框架使得开发者可以使用面向...

    AndroidInject增加sqlite3数据库映射注解(ORM)-IT计算机-毕业设计.zip

    本项目“AndroidInject增加sqlite3数据库映射注解(ORM)”是针对Android应用的一个源码示例,旨在教授如何通过对象关系映射(ORM)技术简化与SQLite3数据库的交互,提升开发效率,特别是在毕业设计或论文撰写过程中...

Global site tag (gtag.js) - Google Analytics