sqlite ORMLite 框架应用

简介: bean package com.test.deamo.bean; import android.os.Parcel; import android.os.Parcelable; import com.

bean

package com.test.deamo.bean;

import android.os.Parcel;
import android.os.Parcelable;

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

/**
 * author: yhf
 * Description:
 * date: 2016/04/20 18:22
 */
@DatabaseTable(tableName = "tb_account")
public class Account implements Parcelable {
    @DatabaseField(generatedId = true)
    private int id;
    @DatabaseField(columnName = "user_name")
    private String userName;// 用户姓名
    @DatabaseField(columnName = "password")
    private String password;//密码
    @DatabaseField(columnName = "token")
    private String token;// token值

    public int getId() {
        return id;
    }

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

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
    
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(this.id);
        dest.writeString(this.userName);
        dest.writeString(this.password);
        dest.writeString(this.token);
    }

    public Account() {
    }

    protected Account(Parcel in) {
        this.id = in.readInt();
        this.userName = in.readString();
        this.password = in.readString();
        this.token = in.readString();
    }

    public static final Creator<Account> CREATOR = new Creator<Account>() {
        @Override
        public Account createFromParcel(Parcel source) {
            return new Account(source);
        }

        @Override
        public Account[] newArray(int size) {
            return new Account[size];
        }
    };
}
DatabaseHelper
package com.test.deamo.utils.db;

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.test.deamo.bean.Account;

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

/**
 * Created by administrator
 * Description 数据库操作封装
 * 2016/4/27 9:06.
 */
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {

    private static final String TABLE_NAME = "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, Account.class);
        } catch (SQLException e)
        {
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase database,
                          ConnectionSource connectionSource, int oldVersion, int newVersion)
    {
        try
        {
            TableUtils.dropTable(connectionSource, Account.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;
        }
    }
}

dao类

package com.test.deamo.dao;

import android.content.Context;

import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.stmt.QueryBuilder;
import com.j256.ormlite.stmt.Where;
import com.test.deamo.bean.Account;
import com.test.deamo.utils.db.DatabaseHelper;

import java.sql.SQLException;

public class AccountDao {
    private Context context;
    private Dao<Account, Integer> accountDao;
    private DatabaseHelper databaseHelper;

    public AccountDao(Context context) {
        this.context = context;
        try {
            databaseHelper = DatabaseHelper.getHelper(this.context);
            accountDao = databaseHelper.getDao(Account.class);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 添加用户信息
     * @param account
     */
    public void add(Account account){
        try {
            accountDao.create(account);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 更新用户信息
     * @param account
     */
    public void update(Account account){
        try {
            accountDao.update(account);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 根据token获取account实体
     * @param token
     * @return Account account
     */
    public Account getAccountWithToken(String token){
        return getAccountWithFiled("token", token);
    }

    /**
     * 根据字段名和值获取账号实体
     * @param fieldName
     * @param fieldVal
     * @return
     */
    public Account getAccountWithFiled(String fieldName, String fieldVal){
        Account account = null;
        try {
            QueryBuilder<Account, Integer> queryBuilder = accountDao.queryBuilder();
            Where<Account, Integer> where = queryBuilder.where();
            where.eq(fieldName, fieldVal);
            account = where.queryForFirst();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return account;
    }
}

 

相关文章
|
数据库 Python
Peewee入门 | 优雅的ORM框架!
Peewee入门 | 优雅的ORM框架!
454 0
|
存储 SQL Java
XOrmlite 一个方便实用的OrmLite数据库框架,支持一键集成
XOrmlite 一个方便实用的OrmLite数据库框架,支持一键集成
259 0
XOrmlite 一个方便实用的OrmLite数据库框架,支持一键集成
|
存储 Java 数据库
小结:greenDAO和LitePal的区别
这两个框架思想都差不多,都是把面向对象映射成关系型语言, 主要区别有以下几个: 1. greenDAO的version等数据库属性设置都是在对应的模型类里面完成的,以Java class的属性变量的形式存储;而LitePal是在另外的一个xml文件中定义。
1384 0
|
Java 数据库 索引
GreenDao3.0版本基础
greenDAO3基本使用 greenDAO3开始使用注解的方式定义实体类(entity),并且是通过安装gradle插件来生成代码。之前的版本则是通过建立一个独立的Java-lib工程来存放生成的文件。
1572 0
|
SQL Java 数据库
Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite
Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite 前不久,我在写了ORMLite这个框架的博文 Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包 但是对于我个人来说,我可能更加倾向于用GreenDao,所以今天也为.
1417 0
|
数据库 开发工具 数据库管理
UWP: 在 UWP 中使用 Entity Framework Core 操作 SQLite 数据库
原文:UWP: 在 UWP 中使用 Entity Framework Core 操作 SQLite 数据库 在应用中使用 SQLite 数据库来存储数据是相当常见的。在 UWP 平台中要使用 SQLite,一般会使用 SQLite for Universal Windows Platform 和 SQLite PCL 之类的库,前者是 SQLite 引擎库,而后者则提供了用于操作数据库的 API ,不过自从 Windows Fall Creators Update 之后,我们有了新的选择。
2383 0
|
数据库 数据库管理 数据安全/隐私保护