IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android Room框架使用 -> 正文阅读

[移动开发]Android Room框架使用

目录

Room 的使用三角色介绍:

使用步骤:

使用准备:

使用:?


Room 的使用三角色介绍:

  1. @Entity(数据库表? 与? 类相似);
  2. @Dao (操作引擎,用于操作数据库)
  3. @Database(创建数据库)

使用步骤:

使用准备:

  1. 导入依赖:(在 bulid.gradle 文件)中导入,(导入的本处版本只是举例,可在官网出查找其他版本)
    dependencies {
    
        def room_version = "2.4.2"
    
        implementation "androidx.room:room-runtime:$room_version"
        annotationProcessor "androidx.room:room-compiler:$room_version"
    }
  2. 结合Rxjava使用额外添加相关依赖:
     dependencies {
        ...
       // optional - RxJava2 support for Room
        implementation "androidx.room:room-rxjava2:$room_version"
    
        // optional - RxJava3 support for Room
        implementation "androidx.room:room-rxjava3:$room_version"
    
        // optional - Guava support for Room, including Optional and ListenableFuture
        implementation "androidx.room:room-guava:$room_version"
    
        // optional - Test helpers
        testImplementation "androidx.room:room-testing:$room_version"
    
        // optional - Paging 3 Integration
        implementation "androidx.room:room-paging:2.5.0-alpha01"
    }

使用:?

  1. @Entity? 创建 数据库表(与 类对象相似):? ??
    package com.example.androidapp.SQlist;
    
    import androidx.room.Entity;
    import androidx.room.PrimaryKey;
    
    @Entity(tableName = "Agency")
    public class Agency implements Serializable {
        @PrimaryKey(autoGenerate = true)
        private int id;
        private String agency_name;
        private String agency_nowTime;
        private String agency_futureTime;
    
    
        private String agency_okTime;
        private String agency_type;
        private String agency_nowstate;
        private String agency_context;
    
        public Agency(String agency_name, String agency_nowTime, String agency_futureTime,
             
        String agency_type, String agency_nowstate, String agency_context) {
            this.agency_name = agency_name;
            this.agency_nowTime = agency_nowTime;
            this.agency_futureTime = agency_futureTime;
            this.agency_type = agency_type;
            this.agency_nowstate = agency_nowstate;
            this.agency_context = agency_context;
        } 
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getAgency_name() {
            return agency_name;
        }
    
        public void setAgency_name(String agency_name) {
            this.agency_name = agency_name;
        }
    
        public String getAgency_nowTime() {
            return agency_nowTime;
        }
    
        public void setAgency_nowTime(String agency_nowTime) {
            this.agency_nowTime = agency_nowTime;
        }
    
        public String getAgency_futureTime() {
            return agency_futureTime;
        }
    
        public void setAgency_futureTime(String agency_futureTime) {
            this.agency_futureTime = agency_futureTime;
        }
    
        public String getAgency_type() {
            return agency_type;
        }
    
        public void setAgency_type(String agency_type) {
            this.agency_type = agency_type;
        }
    
        public String getAgency_nowstate() {
            return agency_nowstate;
        }
    
        public void setAgency_nowstate(String agency_nowstate) {
            this.agency_nowstate = agency_nowstate;
        }
    
        public String getAgency_context() {
            return agency_context;
        }
    
        public void setAgency_context(String agency_context) {
            this.agency_context = agency_context;
        }
    
        public String getAgency_okTime() {
            return agency_okTime;
        }
    
        public void setAgency_okTime(String agency_okTime) {
            this.agency_okTime = agency_okTime;
        }
    
        @Override
        public String toString() {
            return "Agency{" +
                    "id=" + id +
                    ", agency_name='" + agency_name + '\'' +
                    ", agency_nowTime='" + agency_nowTime + '\'' +
                    ", agency_futureTime='" + agency_futureTime + '\'' +
                    ", agency_type='" + agency_type + '\'' +
                    ", agency_nowstate='" + agency_nowstate + '\'' +
                    ", agency_context='" + agency_context + '\'' +
                    '}';
        }
    }
  2. @Dao 操作数据库
    package com.example.androidapp.SQlist;
    
    import androidx.room.Dao;
    import androidx.room.Delete;
    import androidx.room.Insert;
    import androidx.room.Query;
    import androidx.room.Update;
    
    import java.util.List;
    @Dao
    public interface AgencyDao {
    
        @Insert
        void insertAgencies(Agency... agencies);
    
        @Update
        void updateAgencies(Agency... agencies);
    
        @Delete
        void deleteAgencies(Agency... agencies);
    
        @Query("SELECT * FROM Agency ORDER BY ID DESC")
        List<Agency> getAllAgency();
    }
  3. @Database 创建 数据库 并与 数据表 关联:暴露Dao给用户操作数据库
    package com.example.androidapp.SQlist;
    
    import android.content.Context;
    
    import androidx.room.Database;
    import androidx.room.Room;
    import androidx.room.RoomDatabase;
    
    //数据库 关联 之前的表 数据库信息
    //,User.class
    @Database(entities = {Agency.class},version = 1,exportSchema = false)
    public abstract class AgencyDatabase extends RoomDatabase {
    
    //    暴露 dao 给用户操作 数据库
        public abstract AgencyDao getAgencyDao();
    
    //    单例模式 返回 db
        private static AgencyDatabase INSTANCE;
        static synchronized AgencyDatabase getInstance(Context context){
            if (INSTANCE == null){
                INSTANCE = Room.databaseBuilder(context.getApplicationContext(),AgencyDatabase.class,"Agency_database")
                        .build();
            }
            return INSTANCE;
        }
    }
    
  4. 创建 一个 DBclass 用于实现 在异步操作 中进行数据操作(这里我用了AsyncTask进行异步操作)
    package com.example.androidapp.SQlist;
    
    import android.content.Context;
    import android.os.AsyncTask;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class DBEngine {
    
        //    接收 传入的 AgencyDao 对象
        private AgencyDao agencyDao;
        //    接收 传入的 UserDao 对象
        private UserDao userDao;
    
    
        //    接收 获取的所有数据 实现单例
        private static List<Agency> allAgencies = new ArrayList<>();
        private static List<User> allUsers = new ArrayList<>();
    
        //    实现 构造方法
        public DBEngine(Context context) {
            AgencyDatabase agencyDatabase = AgencyDatabase.getInstance(context);
            agencyDao = agencyDatabase.getAgencyDao();
            UserDatabase userDatabase = UserDatabase.getInstance(context);
            userDao = userDatabase.getUserDao();
        }
    
        ;
    
    //*********************************************************************************************
    
        //    插入 操作
        public void insertAgencies(Agency... agencies) {
    //        开启 InsertAsyncTask 线程
            new InsertAsyncTask(agencyDao).execute(agencies);
        }
        //    更新 操作
        public void updateAgencies(Agency... agencies) {
            new UpdateAsyncTask(agencyDao).execute(agencies);
        }
        //    删除 操作
        public void deleteAgencies(Agency... agencies) {
            new DeleteAsyncTask(agencyDao).execute(agencies);
        }
        //    获取 操作
        public void getAllAgencies(Agency... agencies) {
            new GetAllAgencies(agencyDao).execute();
        }
    //*********************************************************************************************
    //Agency
        //    实现 插入功能
        private static class InsertAsyncTask extends AsyncTask<Agency, Void, Void> {
    
            //        获取 AgencyDao 对象
            private AgencyDao dao;
    
            //        实现 构造方法
            public InsertAsyncTask(AgencyDao agencyDao) {
                dao = agencyDao;
            }
    
            //        实现 AgencyDao 操作
            @Override
            protected Void doInBackground(Agency... agencies) {
                dao.insertAgencies(agencies);
                return null;
            }
        }
        //    实现 更新功能
        private static class UpdateAsyncTask extends AsyncTask<Agency, Void, Void> {
    
            private AgencyDao dao;
    
            public UpdateAsyncTask(AgencyDao agencyDao) {
                dao = agencyDao;
            }
    
            @Override
            protected Void doInBackground(Agency... agencies) {
                dao.updateAgencies(agencies);
                return null;
            }
        }
        //    实现 删除功能
        private static class DeleteAsyncTask extends AsyncTask<Agency, Void, Void> {
            private AgencyDao dao;
    
            public DeleteAsyncTask(AgencyDao agencyDao) {
                dao = agencyDao;
            }
    
            @Override
            protected Void doInBackground(Agency... agencies) {
                dao.deleteAgencies(agencies);
                return null;
            }
        }
        //    实现 获取所有数据 功能
        private static class GetAllAgencies extends AsyncTask<Void, Void, List<Agency>> {
    
            private AgencyDao dao;
    
            public GetAllAgencies(AgencyDao agencyDao) {
                dao = agencyDao;
            }
            //        获取数据
            @Override
            protected List<Agency> doInBackground(Void... voids) {
                allAgencies = dao.getAllAgency();
                return allAgencies;
            }
            //        返回 数据
            @Override
            protected void onPostExecute(List<Agency> agencies) {
                super.onPostExecute(agencies);
                allAgencies = agencies;
            }
        }
  5. 在主类 中 实例化 一个DB?对象,都数据进行操作
        //        获取 数据库引擎
        private DBEngine dbEngine;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            dbEngine = new DBEngine(this);
    
            dbEngine.getAllAgencies();
    
    //      实例化 一个 Agency 对象
            Agency new_agency = new Agency(name, nowTimeStr, futureTimeStr, typeStr, stateStr, contextStr);
    
    
        //    插入 操作
            dbEngine.insertAgencies(new_agency );
        //    更新 操作
            dbEngine.updateAgencies(new_agency );
        //    删除 操作
            dbEngine.deleteAgencies(new_agency );
        //    获取 操作
            dbEngine.getAllAgencies(new_agency );
       
        }  

? ? ? ? 项目案例:

? ? ? ? 苏苏待办:

? ? ? ? github:????????GitHub - susihao/Agency: 苏苏待办

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:55:38  更:2022-08-06 10:58:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 4:26:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码