您的位置:首页 > 移动开发 > Android开发

Android ORMLite框架入门用法教程

2015-03-21 10:37 561 查看
大家在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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: