Android ORMLite框架入门用法教程

大家在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、基本项目实例结构图


1)、bean包下为实体类,也就是每个实体类对应一张数据库表,如本实例的User.java类对应数据库的tb_user表,也就是说你有几张表你就要对应有几个实体类。


2)、db包下为DatabaseHelper.java类,这个类是继承于ORMLITE框架里面的OrmLiteSqliteOpenHelper类的,然后在里面实现一些必要的方法,外部在用这个继承类来操作数据库


3)、test包下为测试用例类,用来测试我们写的是否可以运行


总体流程大概这样:下载ormlite的加包,加入到你的项目工程里面去,然后你的项目需要几张表就对应的建立几个实体类,实体类的字段要跟数据库表里面的字段是一致的,然后自定义一个类去继承ORMLITE框架里面的OrmLiteSqliteOpenHelper类,复写里面的onCreate、onUpgrade方法等,然后外部在用这个类去实现对数据库的操作即可。


详情看下面代码:


User.java:


package com.example.ormlitedemo.bean;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
/**
 * 注解
 * @author Jerry
 *tableName="tb_user"表示对应的数据库表叫:tb_user表
 */
@DatabaseTable(tableName="tb_user")
public class User {
	
	//generatedId=true:表示是主键
	@DatabaseField(generatedId=true)
	private int id;
	//columnName="name":表示对应数据库表tb_user表里面的name字段
	@DatabaseField(columnName="name")
	private String name;
	//columnName="name":表示对应数据库表tb_user表里面的age字段
	@DatabaseField(columnName="age")
	private int age;
	//columnName="name":表示对应数据库表tb_user表里面的sex字段
	@DatabaseField(columnName="sex")
	private String sex;
	
	public User()
	{
		
	}
	public User( String name, int age, String sex) {
		//super();
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	public User(int id, String name, int age, String sex) {
		//super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.sex = sex;
	}


	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 int getAge() {
		return age;
	}


	public void setAge(int age) {
		this.age = age;
	}


	public String getSex() {
		return sex;
	}


	public void setSex(String sex) {
		this.sex = sex;
	}
	
	
@Override
public String toString() {
	
	return "ID:"+id+"\tNAME:"+name+"\tAGE:"+age+"\tSEX:"+sex;
}
}


DatabaseHelper.java:


package com.example.ormlitedemo.db;

import java.sql.SQLException;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.example.ormlitedemo.bean.User;
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;

public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
	// 数据库名字
	private static final String TABLE_NAME = "ormlite-test.db";
	// 表的Dao,每一张表对应一个Dao
	private Dao<User, Integer> userDao;

	// 构造函数,私有的外部不能直接访问
	private DatabaseHelper(Context context) {
		super(context, TABLE_NAME, null, 1);
	}

	@Override
	public void onCreate(SQLiteDatabase database,
			ConnectionSource connectionSource) {
		try {
			// 通过TableUtils这个类新建User类对应的表
			TableUtils.createTable(connectionSource, User.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);
			// 再建表
			onCreate(database, connectionSource);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	// DatabaseHelper实例
	private static DatabaseHelper instance;

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

	/**
	 * 获取UserDao
	 * 
	 * @return
	 * @throws SQLException
	 */
	public Dao<User, Integer> getUserDao() throws SQLException {
		if (userDao == null) {
			userDao = getDao(User.class);
		}
		return userDao;
	}

	/**
	 * 释放
	 */
	@Override
	public void close() {
		super.close();
		userDao = null;
	}
}

OrmLiteDbTest.java


package com.example.ormlitedemo.test;

import java.sql.SQLException;
import java.util.List;
import com.example.ormlitedemo.bean.User;
import com.example.ormlitedemo.db.DatabaseHelper;

import android.test.AndroidTestCase;
/**
 * 测试
 * @author Jerry
 *
 */
public class OrmLiteDbTest extends AndroidTestCase 
{
	/**
	 * 增
	 */
	public void addUserTest()
	{
		DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
		
		try {
			User u1=new User("stb", 22, "男");
			helper.getUserDao().create(u1);
			
			User u2=new User("stb2", 23, "男");
			helper.getUserDao().create(u2);
			
			User u3=new User("stb3", 24, "男");
			helper.getUserDao().create(u3);
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
   /**
    * 删
    */
	public void delUserTest()
	{
		DatabaseHelper helper=DatabaseHelper.getHelper(getContext());
		
		try {
			helper.getUserDao().deleteById(1);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 改
	 */
	public void updateUserTest()
	{
		DatabaseHelper helper=DatabaseHelper.getHelper(getContext());
		User u=new User("我爱你", 25, "女");
		u.setId(1);
		try {
			helper.getUserDao().update(u);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 查
	 */
	public void queryUserTest()
	{
		DatabaseHelper helper=DatabaseHelper.getHelper(getContext());
		List<User> list=null;
		try {
			 list = helper.getUserDao().queryForAll();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		if(list!=null)
		{
			for(int i=0;i<list.size();i++)
			{
				System.out.println(list.get(i).toString());
			}
		}
	}
}

AndroidManifest.xml


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.ormlitedemo"
    android:versionCode="1"
    android:versionName="1.0" >
    
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
       <uses-library android:name="android.test.runner" />  
        <activity
            android:name="com.example.ormlitedemo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 <!-- 记住这个一要放在application外面,不然会出现配置错误 信息 -->  
    <instrumentation android:name="android.test.InstrumentationTestRunner"  
        android:targetPackage="com.example.ormlitedemo" android:label="Tests for My App" />  
</manifest>


注意:用AndroidTestCase测试记得要配置以下两个:


   <uses-library android:name="android.test.runner" />  


 <instrumentation android:name="android.test.InstrumentationTestRunner"  
        android:targetPackage="com.example.ormlitedemo" android:label="Tests for My App" />  

ps:User.java里面的空的构造方法记得要写不然会报错。


测试效果:

     增加后查询结果:


     修改后查询结果:


     删除后查询结果:



项目源代码下载地址:

http://download.csdn.net/detail/su_tianbiao/8520113

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值