Android数据库---Room、LitePal、GreenDao
2022/1/26 19:05:55
本文主要是介绍Android数据库---Room、LitePal、GreenDao,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Room
https://developer.android.google.cn/training/data-storage/room
- app/build.gradle中添加依赖声明。
- 创建实体类,添加对应的注解。
- 创建Dao接口,接口中的方法对应crud操作。
- 创建继承自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
- app/build.gradle中添加依赖声明。
- main/assets文件夹下添加litepal.xml文件。
- application中初始化。
- 实体类要继承LitePalSupport,才能进行crud操作,不需要创建数据库的实例。
注意:
- 使用userAll方法更新数据库时,实体类中需要有无参的构造方法。
- 修改数据库模型,litepal.xml修改版本号即可,但是有一些LitePal无法处理的升级条件,并且将清除升级表中的所有数据:
添加一个注释为的字段unique = true。
将字段的注释更改为unique = true。
将字段的注释更改为nullable = false。
GreenDao
github:https://github.com/greenrobot/greenDAO
- project/build.gradle和app/build.gradle中添加依赖声明。
- 实体类对应数据库表,使用@Entity注解标记,使用@Id修改的属性必须是long类型。创建完实体类后进行编译,会自动生成对应实体类的Dao类。
- 创建Helper、Database、DaoSession 的对象,因为DevOpenHelper将在架构更改时删除所有表(在onUpgrade()中)。最好创建并使用DaoMaster.OpenHelper的子类。
- 获取自动生成的实体类的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); } } } }
这篇关于Android数据库---Room、LitePal、GreenDao的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路