sách gpt4 ăn đã đi

Cách sử dụng thành phần Phòng

In lại Tác giả: Tôi là chú chim nhỏ Thời gian cập nhật: 2023-08-11 22:31:41 31 4
mua khóa gpt4 giày nike

1. Phòng cơ sở dữ liệu ORM chính thức của Android.

  Android sử dụng Sqlite làm nơi lưu trữ cơ sở dữ liệu. Tuy nhiên, do mã Sqlite cồng kềnh và dễ viết nên Google đã tung ra Room. Trên thực tế, Room đóng gói một lớp khác bên trên Sqlite. Sau đây là sơ đồ kiến ​​trúc của Room:

  Để hiểu rõ hơn về sơ đồ trên, trước tiên chúng ta cần hiểu một số khái niệm: Thực thể và Đạo.

  Entity: Thực thể, một thực thể tương ứng với một bảng trong cơ sở dữ liệu. Lớp Entity là ánh xạ các bảng trong Sqlite sang các lớp Java. Ví dụ: có một bảng sinh viên có ba trường: id, name và age; sau đó có một lớp sinh viên tương ứng, với ba biến thành viên là id, name, và tuổi và học sinh Các trường trong bảng có sự tương ứng 1-1.

  Dao: Đối tượng truy cập dữ liệu, nghĩa đen là dữ liệu trong cơ sở dữ liệu có thể được truy cập thông qua nó.

  Sau đó, cái gọi là ORM (Ánh xạ quan hệ đối tượng) rất dễ hiểu. Đó là thiết lập ánh xạ từ bảng cơ sở dữ liệu đến lớp Java. Các trường trong bảng tương ứng với các biến thành viên trong lớp và các bản ghi trong bảng tương ứng với một thể hiện của lớp.

2. Cách sử dụng cơ bản cơ sở dữ liệu Room.

  1. Trước khi sử dụng cơ sở dữ liệu Room, trước tiên bạn phải nhập các phần phụ thuộc sau vào tệp app/build.gradle:

                          triển khai 'androidx.room:room-runtime:2.5.2'
                        
  chú thíchBộ xử lý 'androidx.room:room-compiler:2.5.2'
 2. Tạo Entity về sinh viên, tức là tạo bảng sinh viên:
 
 
                          @Thực thể
                          
lớp công khai Học sinh {
@Khóa chính
số nguyên riêng tư id;
@ColumnInfo(tên="tên",typeAffinity = ColumnInfo.TEXT)
chuỗi tên riêng tư;
@ColumnInfo(tên="tuổi",typeAffinity = ColumnInfo.INTEGER)
số nguyên riêng tư tuổi;

công khai Integer getId() {
trả về id;
}

công khai void setId(Số nguyên id) {
id này = id;
}

công khai String getName() {
trả về tên;
}

public void setName(String name) {
this.name = tên;
}

công khai Integer getAge() {
tuổi trở về;
}

public void setAge(Tuổi nguyên) {
this.age = tuổi;
}

public Student(Số nguyên id, Tên chuỗi, Số nguyên tuổi) {
id này = id;
this.name = tên;
this.age = tuổi;
}

@Ghi đè
công khai String toString() {
trả về "Sinh viên{" +
"mã số=" + mã số +
", tên='" + tên + '\'' +
", tuổi=" + tuổi +
'}';
}
}
                          
                             
                          
                        

  Chú thích @Entity được sử dụng để ánh xạ lớp Sinh viên tới bảng dữ liệu trong cơ sở dữ liệu Room; chú thích @PrimaryKey là ràng buộc khóa chính; chú thích @ColumnInfo có thể đặt tên và loại trường trong bảng tương ứng với thành viên; biến.

  Một điều cần lưu ý là phương thức get không thể bỏ qua.

  3. Đối với lớp sinh viên Thực thể ở trên, chúng ta cần xác định tệp giao diện Dao để truy cập cơ sở dữ liệu. Chỉ cần thêm chú thích @Dao phía trên giao diện.

                          
                            @Dao

                          
                          
                            công cộng
                          
                          
                            giao diện
                          
                          
                             StudentDao { @Chèn
    
                          
                          
                            vô hiệu
                          
                          
                             insertStudent(Sinh viên sinh viên); @Xóa
    
                          
                          
                            vô hiệu
                          
                          
                             deleteStudent(Sinh viên sinh viên); @Cập nhật
    
                          
                          
                            vô hiệu
                          
                          
                             updataStudent(Sinh viên sinh viên); @Query(
                          
                          "chọn * từ Học sinh"
                          
                            ) Dữ liệu trực tiếp
                          
                          >
                          
                             lấy tất cả học sinh(); @Query(
                          
                          "chọn * từ học sinh có id=:id"
                          
                            ) Sinh viên selectStudentById(Số nguyên id); }
                          
                        

  4. Sau khi xác định Thực thể và Dao, bước tiếp theo là tạo cơ sở dữ liệu như sau:

                          @Database(thực thể = {Sinh viên.
                          
                            lớp học
                          
                          },phiên bản = 1
                          
                            )

                          
                          
                            công cộng
                          
                          
                            tóm tắt
                          
                          
                            lớp học
                          
                           Cơ sở dữ liệu của tôi 
                          
                            mở rộng
                          
                          
                             Cơ sở dữ liệu phòng {
    
                          
                          
                            riêng tư
                          
                          
                            tĩnh
                          
                          
                            cuối cùng
                          
                           Chuỗi DATABASE_NAME="my_db"
                          
                            ;
    
                          
                          
                            riêng tư
                          
                          
                            tĩnh
                          
                          
                             Cơ sở dữ liệu của tôi Cơ sở dữ liệu của tôi;
    
                          
                          
                            công cộng
                          
                          
                            tĩnh
                          
                          
                            đồng bộ
                          
                          
                             MyDatabase getInstance(Bối cảnh ngữ cảnh){
        
                          
                          
                            nếu như
                          
                          (Cơ sở dữ liệu của tôi==
                          
                            vô giá trị
                          
                          
                            ){ Cơ sở dữ liệu của tôi
                          
                          = Room.databaseBuilder(bối cảnh,MyDatabase.
                          
                            lớp học
                          
                          
                            ,TÊN_CƠ_SỞ_DỮ_Liệu).build(); }
        
                          
                          
                            trở lại
                          
                          
                             myDatabase; } @Ghi đè
    
                          
                          
                            công cộng
                          
                          
                            vô hiệu
                          
                          
                             clearAllTables() { } @NonNull @Ghi đè
    
                          
                          
                            được bảo vệ
                          
                          
                             Trình theo dõi vô hiệu hóa tạo ra Trình theo dõi vô hiệu hóa() {
        
                          
                          
                            trở lại
                          
                          
                            vô giá trị
                          
                          
                            ; } @NonNull @Ghi đè
    
                          
                          
                            được bảo vệ
                          
                          
                             Hỗ trợSQLiteOpenHelper createOpenHelper(@NonNull DatabaseConfiguration databaseConfiguration) {
        
                          
                          
                            trở lại
                          
                          
                            vô giá trị
                          
                          
                            ; }
    
                          
                          
                            công cộng
                          
                          
                            tóm tắt
                          
                          
                             StudentDao studentDao(); }
                          
                        

  Chú thích @Database được sử dụng để cho hệ thống biết rằng đây là đối tượng cơ sở dữ liệu Room, thuộc tính thực thể được sử dụng để chỉ định cơ sở dữ liệu có bảng nào và phiên bản được sử dụng để chỉ định số phiên bản của cơ sở dữ liệu.

  Lớp cơ sở dữ liệu cần kế thừa lớp RoomDatabase và kết hợp nó với chế độ singleton để hoàn tất quá trình tạo.

  Tại thời điểm này, cơ sở dữ liệu và bảng đã được tạo. Tiếp theo, hãy xem cách thêm, xóa, sửa đổi và kiểm tra cơ sở dữ liệu.

  5. Kết hợp ViewModel và LiveData để thêm, xóa, sửa đổi và truy vấn cơ sở dữ liệu Khi các bản ghi trong bảng cơ sở dữ liệu thay đổi, trang có thể nhận được thông báo kịp thời và cập nhật trang.

  LiveData thường được sử dụng cùng với ViewModel. ViewModel dùng để lưu trữ dữ liệu trang nên chúng ta có thể đưa việc khởi tạo cơ sở dữ liệu vào ViewModel. Tuy nhiên, việc khởi tạo cơ sở dữ liệu yêu cầu sử dụng đối tượng Context nên chúng ta không nên sử dụng trực tiếp ViewModel. , nhưng nên sử dụng Lớp con AndroidViewModel khác. .

                          
                            công cộng
                          
                          
                            lớp học
                          
                           Mô hình xem sinh viên 
                          
                            mở rộng
                          
                          
                             AndroidViewModel {
    
                          
                          
                            riêng tư
                          
                          
                             Cơ sở dữ liệu của tôi Cơ sở dữ liệu của tôi;
    
                          
                          
                            riêng tư
                          
                           LiveData>
                          
                             liveDataStudents;

    
                          
                          
                            công cộng
                          
                          
                             StudentViewModel(@NonNull Ứng dụng ứng dụng) {
        
                          
                          
                            siêu
                          
                          
                            (ứng dụng); myDatabase
                          
                          =
                          
                            MyDatabase.getInstance(ứng dụng); liveDataStudents
                          
                          =
                          
                            myDatabase.studentDao().getAllStudents(); }
    
                          
                          
                            công cộng
                          
                           LiveData>
                          
                             lấyLiveDataSinh viên(){
        
                          
                          
                            trở lại
                          
                          
                             liveDataStudents; }
    
                          
                          
                            công cộng
                          
                          
                            vô hiệu
                          
                          
                             insertStudent(Sinh viên sinh viên){ myDatabase.studentDao().insertStudent(sinh viên); }
    
                          
                          
                            công cộng
                          
                          
                            vô hiệu
                          
                          
                             deleteStudent(Sinh viên sinh viên){ myDatabase.studentDao().deleteStudent(sinh viên); }
    
                          
                          
                            công cộng
                          
                          
                            vô hiệu
                          
                          
                             updateStudent(Sinh viên sinh viên){ myDatabase.studentDao().updataStudent(sinh viên); }
    
                          
                          
                            công cộng
                          
                          
                             Sinh viên chọnStudentById(Integer id){
        
                          
                          
                            trở lại
                          
                          
                             myDatabase.studentDao().selectStudentById(id); } }
                          
                        

  6. Khởi tạo Sinh viênViewModel trong Hoạt động, thực hiện các thao tác thêm, xóa, sửa đổi và truy vấn cũng như theo dõi các thay đổi trong LiveData.

                          
                            công cộng
                          
                          
                            lớp học
                          
                           Hoạt động chính 
                          
                            mở rộng
                          
                           Hoạt động tương thích của ứng dụng 
                          
                            thực hiện
                          
                          
                             Xem.OnClickListener {
    
                          
                          
                            riêng tư
                          
                          
                             Nút btn_insert,btn_delete,btn_update,btn_select;
    
                          
                          
                            riêng tư
                          
                          
                             Hiển thị văn bản tv_display;
    
                          
                          
                            riêng tư
                          
                          
                             Mô hình StudentViewModel;
    
                          
                          
                            riêng tư
                          
                           ExecutorService thực thi =
                          
                             Executors.newSingleThreadExecutor();
    
                          
                          
                            riêng tư
                          
                          
                             Sinh viên sinh viên; @SuppressLint(
                          
                          "MissingInflatedId"
                          
                            ) @Ghi đè
    
                          
                          
                            được bảo vệ
                          
                          
                            vô hiệu
                          
                          
                             onCreate(Gói savedInstanceState) {
        
                          
                          
                            siêu
                          
                          
                            .onCreate(savedInstanceState); thiết lậpContentView(R.layout.activity_main); màn hình tv
                          
                          =
                          
                            tìmViewById(R.id.tv_display); btn_delete
                          
                          =
                          
                            tìmViewById(R.id.btn_delete); btn_insert
                          
                          =
                          
                            tìmViewById(R.id.btn_insert); btn_update
                          
                          =
                          
                            tìmViewById(R.id.btn_update); btn_select
                          
                          =
                          
                            findViewById(R.id.btn_select); btn_select.setOnClickListener(
                          
                          
                            cái này
                          
                          
                            ); btn_insert.setOnClickListener(
                          
                          
                            cái này
                          
                          
                            ); btn_delete.setOnClickListener(
                          
                          
                            cái này
                          
                          
                            ); btn_update.setOnClickListener(
                          
                          
                            cái này
                          
                          
                            ); studentViewModel
                          
                          =
                          
                            mới
                          
                           Nhà cung cấp ViewModel(
                          
                            cái này
                          
                          ,
                          
                            mới
                          
                           MyViewModelFactory(getApplication())).get(StudentViewModel.
                          
                            lớp học
                          
                          
                            ); studentViewModel.getLiveDataStudents().quan sát(
                          
                          
                            cái này
                          
                          , 
                          
                            mới
                          
                           Người quan sát>
                          
                            () { @Ghi đè
            
                          
                          
                            công cộng
                          
                          
                            vô hiệu
                          
                           onChanged(Danh sách
                          
                             sinh viên) { tv_display.setText(sinh viên
                          
                          +""
                          
                            ); } }); } @Ghi đè
    
                          
                          
                            công cộng
                          
                          
                            vô hiệu
                          
                          
                             onClick(Xem chế độ xem) {
        
                          
                          
                            công tắc
                          
                          
                            (xem.getId()){
            
                          
                          
                            trường hợp
                          
                          
                             R.id.btn_delete: lệnh thực thi(
                          
                          
                            mới
                          
                          
                             Có thể chạy() { @Override
                    
                          
                          
                            công cộng
                          
                          
                            vô hiệu
                          
                          
                             chạy() { studentViewModel.deleteStudent(
                          
                          
                            mới
                          
                           Học sinh(1,"jack",20
                          
                            )); } });
                
                          
                          
                            phá vỡ
                          
                          
                            ;
            
                          
                          
                            trường hợp
                          
                          
                             R.id.btn_update: thực thi(
                          
                          
                            mới
                          
                          
                             Có thể chạy() { @Override
                    
                          
                          
                            công cộng
                          
                          
                            vô hiệu
                          
                          
                             chạy() { studentViewModel.cập nhậtStudent(
                          
                          
                            mới
                          
                           Học sinh(1,"zhangsan",32
                          
                            )); } });

                
                          
                          
                            phá vỡ
                          
                          
                            ;
            
                          
                          
                            trường hợp
                          
                          
                             R.id.btn_insert: trình thực thi.execute(
                          
                          
                            mới
                          
                          
                             Có thể chạy() { @Override
                    
                          
                          
                            công cộng
                          
                          
                            vô hiệu
                          
                          
                             chạy() { studentViewModel.insertStudent(
                          
                          
                            mới
                          
                           Học sinh(1,"lisi",22
                          
                            )); } });
                
                          
                          
                            phá vỡ
                          
                          
                            ;
            
                          
                          
                            trường hợp
                          
                          
                             R.id.btn_select: lệnh thực thi(
                          
                          
                            mới
                          
                          
                             Có thể chạy() { @Override
                    
                          
                          
                            công cộng
                          
                          
                            vô hiệu
                          
                          
                             chạy() { sinh viên 
                          
                          = studentViewModel.selectStudentById(1
                          
                            ); Log.i(
                          
                          "Bài kiểm tra"
                          
                            ,sinh viên.toString()); } });
                
                          
                          
                            phá vỡ
                          
                          
                            ; } } }
                          
                        
                          
                            công cộng
                          
                          
                            lớp học
                          
                           Nhà máy MyViewModel 
                          
                            thực hiện
                          
                          
                             ViewModelProvider. Nhà máy {
    
                          
                          
                            riêng tư
                          
                          
                             Ứng dụng ứng dụng;
    
                          
                          
                            công cộng
                          
                          
                             MyViewModelFactory(Ứng dụng ứng dụng){
        
                          
                          
                            cái này
                          
                          .ứng dụng=
                          
                            ứng dụng; } @NonNull @Override
    
                          
                          
                            công cộng
                          
                           
                            mở rộng
                          
                           ViewModel> T tạo(@NonNull Lớp
                          
                             Lớp mô hình) {
        
                          
                          
                            trở lại
                          
                           (T)
                          
                            mới
                          
                          
                             StudentViewModel(ứng dụng); } }
                          
                        

  Khi ứng dụng được chạy và cơ sở dữ liệu được thêm, xóa hoặc sửa đổi, phương thức onChanged sẽ được gọi lại và sau đó trang có thể được cập nhật theo phương thức này.

  。

Cuối cùng, bài viết về cách sử dụng các thành phần Room này kết thúc tại đây. Nếu bạn muốn biết thêm về cách sử dụng các thành phần Room, vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

31 4 0
tôi là một con chim nhỏ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress