Android数据库---Room、LitePal、GreenDao

Room

https://developer.android.google.cn/training/data-storage/room

  1. app/build.gradle中添加依赖声明。
  2. 创建实体类,添加对应的注解。
  3. 创建Dao接口,接口中的方法对应crud操作。
  4. 创建继承自RoomDatabase的抽象类,并在类中创建数据库的实例。

实体类,对应数据库中的表:

@Entity(tableName = "user_table")
public class UserEntity {
    @PrimaryKey(autoGenerate = true)
    public int id;

    @ColumnInfo(name = "name")
    public String name;
    @ColumnInfo(name = "address")
    public String address;

    public UserEntity (String name, String address) {
        this.name= name;
        this.address= address;
    }
}

Dao接口,每个方法对应一条sql语句:

@Dao
public interface UserEntityDao {
    @Query("SELECT * FROM user_table")
    List<UserEntity> queryAll();

    @Insert
    void insetItem(UserEntity userEntity);

    @Insert
    void insertAll(UserEntity... userEntities);
}

创建数据库实例:

@Database(entities = {UserEntity.class}, version = 1)
public abstract class MyDatabase extends RoomDatabase {
    private static MyDatabase sMyDatabase;

    public abstract UserEntityDao mUserEntityDao();
    
    public static MyDatabase getMyDatabase() {
        if (sMyDatabase== null) {
            synchronized (MyDatabase .class) {
                sMyDatabase= Room.databaseBuilder(BaseApplication.getAppContext(),
                        MyDatabase .class, "demo_db").build();
            }
        }
        return sMyDatabase;
    }
}

使用:

    public void loadHistories() {
        new Thread(() -> {
            MyDatabase database = MyDatabase .getMyDatabase();
            List<UserEntity> list = database.mUserEntityDao().queryAll();
        }).start();
    }

LitePal

github:https://github.com/guolindev/LitePal

  1. app/build.gradle中添加依赖声明。
  2. main/assets文件夹下添加litepal.xml文件。
  3. application中初始化。
  4. 实体类要继承LitePalSupport,才能进行crud操作,不需要创建数据库的实例。

注意:

  • 使用userAll方法更新数据库时,实体类中需要有无参的构造方法。
  • 修改数据库模型,litepal.xml修改版本号即可,但是有一些LitePal无法处理的升级条件,并且将清除升级表中的所有数据:
    添加一个注释为的字段unique = true。
    将字段的注释更改为unique = true。
    将字段的注释更改为nullable = false。

GreenDao

github:https://github.com/greenrobot/greenDAO

  1. project/build.gradle和app/build.gradle中添加依赖声明。
  2. 实体类对应数据库表,使用@Entity注解标记,使用@Id修改的属性必须是long类型。创建完实体类后进行编译,会自动生成对应实体类的Dao类。
  3. 创建Helper、Database、DaoSession 的对象,因为DevOpenHelper将在架构更改时删除所有表(在onUpgrade()中)。最好创建并使用DaoMaster.OpenHelper的子类。
  4. 获取自动生成的实体类的Dao对象,进行crud操作。
public class GreenDaoManager {
    private static GreenDaoManager sInstance;
    private final DaoSession mDaoSession;

    public static GreenDaoManager getInstance() {
        if (sInstance == null) {
            synchronized (GreenDaoManager.class) {
                sInstance = new GreenDaoManager();
            }
        }
        return sInstance;
    }

    private GreenDaoManager() {
        DaoMaster.OpenHelper helper = new MyOpenHelper(BaseApplication.getApplication(), "greendao_user.db");
        Database db = helper.getWritableDb();
        mDaoSession = new DaoMaster(db).newSession();
    }

    public GreenDaoUserEntityDao getUserEntityDao() {
        return mDaoSession.getGreenDaoUserEntityDao();
    }

    public void insertAllUsers(List<GreenDaoUserEntity> lists) {
        if (lists != null) {
            for (GreenDaoUserEntity userEntity : lists) {
                getUserEntityDao().insert(userEntity);
            }
        }
    }
 }
上一篇:Room 让数据库变得无比高效简洁 3.进阶和完善的基础上加上一个recyclerView


下一篇:酒店管理系统——Java实现(小项目)