OrmLite框架基本使用

1、在AndroidStudio的项目APP的gradle中添加ormLite的库:compile 'com.j256.ormlite:ormlite-android:5.0';

2、创建Bean实体类

1)、创建一个UserBean.java

package com.fengyu.hu.db.bean;

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

/**
 * Created by Administrator on 2018/2/4.
 */
@DatabaseTable(tableName = "tb_user_bean")
public class UserBean {
    @DatabaseField(columnName = "name")
    private String name;
    @DatabaseField(columnName = "desc")
    private String desc;
    @DatabaseField(columnName = "age")
    private int age;
    @DatabaseField(generatedId = true)
    private int id;

    public UserBean() {
    }

    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;
    }

    public int getAge() {
        return age;
    }

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

    public int getId() {
        return id;
    }

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

    @Override
    public String toString() {
        return "UserBean{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                ", age=" + age +
                ", id=" + id +
                '}';
    }
}
其中在UserBean添加@DatabaseTable(tableName = "tb_user_bean")表示这是一张表,tb_user_bean是该表的名字,在属性前添加@DatabaseField(columnName = "age")这个字段,表示在数据库表中列的名称,其中@DatabaseField(generatedId = true)表示id主键自动生产,自增长

3、编写Dao类

1)、原生数据库需要继承需要继承SQLiteOpenHelper,这里需要继承OrmLiteSqliteOpenHelper,具体操作如下代码:

package com.fengyu.hu.db.helper;

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

import com.fengyu.hu.db.bean.UserBean;
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 java.sql.SQLException;

/**
 * Created by Administrator on 2018/2/4.
 */

public class DatabaseHelperSimple extends OrmLiteSqliteOpenHelper{
    private static final String TB_NAME = "TB_SIMPLE_USE.db";
    private static final int TB_VERSION = 1;
    private DatabaseHelperSimple(Context context) {
        super(context, TB_NAME, null, TB_VERSION );
    }

    @Override
    public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
        try {
            TableUtils.clearTable(connectionSource, UserBean.class);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

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

    private static DatabaseHelperSimple instance;
    public static synchronized DatabaseHelperSimple getInstance(Context context){
        if (instance == null){
            synchronized (DatabaseHelperSimple.class){
                if (instance == null){
                    instance = new DatabaseHelperSimple(context.getApplicationContext());
                }
            }
        }
        return instance;
    }
    
    private Dao<UserBean,Integer> mDao;
    public Dao<UserBean,Integer> getmDao() throws SQLException {
        return getDao(UserBean.class);
    }
    
    public void close(){
        close();
        mDao = null;
    }
}
我们需要实现两个方法onCreate与 onUpgrade,onCreate是数据库第一次创建的时候调用,而onUpdate是数据库进行版本升级的时候的调用,这里在onCreate方法中创建表 TableUtils.clearTable(connectionSource, UserBean.class);,onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion)更新表,使用ormlite提供的TableUtils.dropTable(connectionSource, User.class, true);进行删除操作~删除完成后,别忘了,创建操作:onCreate(database, connectionSource);这里我们使用单列,

2)、编写UserBean的Dao,如下代码:

private Dao<UserBean,Integer> mDao;
    public Dao<UserBean,Integer> getmDao() throws SQLException {
        return getDao(UserBean.class);
    }

有了UserDao就可以进行数据库的增删改查操作了

4、测试

package com.fengyu.hu.activity;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.fengyu.hu.R;
import com.fengyu.hu.db.bean.User;
import com.fengyu.hu.db.bean.UserBean;
import com.fengyu.hu.db.dao.UserDao;
import com.fengyu.hu.db.dao.UserDaoImp;
import com.fengyu.hu.db.helper.DatabaseHelperSimple;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * <pre>
 *      author : xiaohu
 *      time   : 2018/1/23
 *      des    :
 *  <pre/>
 */

public class OrmLiteActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ormlite);
        UserBean userBean = new UserBean();
        userBean.setAge(22);
        userBean.setDesc("小明写OrmLite");
        userBean.setName("小明");
        try {
            DatabaseHelperSimple.getInstance(this).getmDao().create(userBean);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        List<UserBean> list = new ArrayList<>();
        UserBean userBean2 = new UserBean();
        userBean2.setAge(16);
        userBean2.setDesc("插入数据2");
        userBean2.setName("数据2");
        UserBean userBean3 = new UserBean();
        userBean3.setAge(14);
        userBean3.setDesc("插入数据3");
        userBean3.setName("数据3");
        list.add(userBean2);
        list.add(userBean3);
        try {
            DatabaseHelperSimple.getInstance(this).getmDao().create(list);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            List<UserBean> userList = DatabaseHelperSimple.getInstance(this).getmDao().queryForAll();
            for (UserBean user : userList){
                Log.e("xys", "user.toStirng-----" + user.toString());
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}



输出日志:

2-04 20:07:12.476 16757-16757/com.fengyu.hu E/xys: user.toStirng-----UserBean{name='小明', desc='小明写OrmLite', age=22, id=1}
02-04 20:07:12.476 16757-16757/com.fengyu.hu E/xys: user.toStirng-----UserBean{name='数据2', desc='插入数据2', age=16, id=2}
02-04 20:07:12.476 16757-16757/com.fengyu.hu E/xys: user.toStirng-----UserBean{name='数据3', desc='插入数据3', age=14, id=3}

其中  DatabaseHelperSimple.getInstance(this).getmDao().create(userBean);插入数据,DatabaseHelperSimple.getInstance(this).getmDao().create(list);批量插入数据, 

List<UserBean> userList = DatabaseHelperSimple.getInstance(this).getmDao().queryForAll();查询该表中所有的数据

好了到此OrmLite的基本用法应该会操作了,下篇将补充OrmLite的拓展用法:http://mp.blog.csdn.net/postedit/79255303;

参考了http://blog.csdn.net/lmj623565791/article/details/39121377这篇文章


猜你喜欢

转载自blog.csdn.net/hujiaxi222/article/details/79254131